home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1997 May / Pcwk0597.iso / borland / cb / setup / cbuilder / data.z / WIN31REG.PAS < prev    next >
Pascal/Delphi Source File  |  1997-02-28  |  3KB  |  139 lines

  1. unit Win31Reg;
  2.  
  3. interface
  4.  
  5. uses DsgnIntf, Classes, Forms;
  6.  
  7. type
  8.   TTabPageNameProperty = class(TPropertyEditor)
  9.     function GetAttributes: TPropertyAttributes; override;
  10.     procedure GetValues(Proc: TGetStrProc); override;
  11.     function GetValue: string; override;
  12.     procedure SetValue(const AValue: string); override;
  13.   end;
  14.  
  15.   TTabPageListProperty = class(TPropertyEditor)
  16.     function GetAttributes: TPropertyAttributes; override;
  17.     function GetValue: string; override;
  18.     procedure Edit; override;
  19.   end;
  20.  
  21.   TTabbedNotebookEditor = class(TDefaultEditor)
  22.     procedure ExecuteVerb(Index: Integer); override;
  23.     function GetVerb(Index: Integer): string; override;
  24.     function GetVerbCount: Integer; override;
  25.   end;
  26.  
  27. procedure Register;
  28.  
  29. implementation
  30.  
  31. uses SysUtils, ExtCtrls, Tabs, NoteBReg, TabNotBk, PageEdit, Outline, LibConst;
  32.  
  33. { TTabPageNameProperty }
  34. function TTabPageNameProperty.GetAttributes: TPropertyAttributes;
  35. begin
  36.   Result := [paValueList];
  37. end;
  38.  
  39. procedure TTabPageNameProperty.GetValues(Proc: TGetStrProc);
  40. var
  41.   I: Integer;
  42.   Notebook: TTabbedNotebook;
  43.   Page: TTabPage;
  44. begin
  45.   Notebook := GetComponent(0) as TTabbedNotebook;
  46.   for I := 0 to Notebook.Pages.Count - 1 do
  47.   begin
  48.     Page := Notebook.Pages.Objects[I] as TTabPage;
  49.     Proc(Page.Caption);
  50.   end;
  51. end;
  52.  
  53. function TTabPageNameProperty.GetValue: string;
  54. begin
  55.   Result := GetStrValue;
  56. end;
  57.  
  58. procedure TTabPageNameProperty.SetValue(const AValue: string);
  59. begin
  60.   SetStrValue(AValue);
  61. end;
  62.  
  63. { TTabPageListProperty }
  64. function TTabPageListProperty.GetAttributes: TPropertyAttributes;
  65. begin
  66.   Result := [paDialog];
  67. end;
  68.  
  69. function TTabPageListProperty.GetValue: string;
  70. begin
  71.   FmtStr(Result, '(%s)', [GetPropType^.Name]);
  72. end;
  73.  
  74. procedure TTabPageListProperty.Edit;
  75. var
  76.   D: TNotebookEditDlg;
  77. begin
  78.   D := TNotebookEditDlg.Create(Application);
  79.   try
  80.     D.SetPageList(TStringList(GetOrdValue));
  81.     D.ShowModal;
  82.     if D.Modified then Designer.Modified;
  83.   finally
  84.     D.Free;
  85.   end;
  86. end;
  87.  
  88. { TNotebookEditor }
  89.  
  90. const
  91.   Verbs: array[0..1] of Word = (SNextPage, SPrevPage);
  92.  
  93. procedure TTabbedNotebookEditor.ExecuteVerb(Index: Integer);
  94. var
  95.   NewPage: Integer;
  96. begin
  97.   with TTabbedNotebook(Component) do
  98.   begin
  99.     NewPage := PageIndex;
  100.     if Index = 0 then
  101.       Inc(NewPage) else
  102.       Dec(NewPage);
  103.     if NewPage < 0 then NewPage := Pages.Count
  104.     else if NewPage >= Pages.Count then NewPage := 0;
  105.     if NewPage <> PageIndex then
  106.     begin
  107.       PageIndex := NewPage;
  108.       Designer.Modified;
  109.     end;
  110.   end;
  111. end;
  112.  
  113. function TTabbedNotebookEditor.GetVerb(Index: Integer): string;
  114. begin
  115.   Result := LoadStr(Verbs[Index]);
  116. end;
  117.  
  118. function TTabbedNotebookEditor.GetVerbCount: Integer;
  119. begin
  120.   Result := High(Verbs) + 1;
  121. end;
  122.  
  123. procedure Register;
  124. begin
  125.   RegisterComponents(LoadStr(srWin31), [TTabSet, TOutline,
  126.     THeader, TTabbedNotebook, TNotebook]);
  127.  
  128.   RegisterComponentEditor(TNotebook, TNotebookEditor);
  129.   RegisterComponentEditor(TTabbedNotebook, TTabbedNotebookEditor);
  130.  
  131.   RegisterPropertyEditor(TypeInfo(string), TNotebook, 'ActivePage', TPageNameProperty);
  132.   RegisterPropertyEditor(TypeInfo(TStrings), TNotebook, 'Pages', TPageListProperty);
  133.   RegisterPropertyEditor(TypeInfo(string), TTabbedNotebook, 'ActivePage', TTabPageNameProperty);
  134.   RegisterPropertyEditor(TypeInfo(TStrings), TTabbedNotebook, 'Pages',    TTabPageListProperty);
  135. end;
  136.  
  137. end.
  138.  
  139.