home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 25: Programming / pc_actual_25.iso / Delphi / eXpertDevelopmentKit / SOURCE / XDKFIXED.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1998-01-26  |  5.0 KB  |  183 lines

  1. {*******************************************************}
  2. {                                                       }
  3. {       eXpert Development Kit                          }
  4. {                                                       }
  5. {       Copyright (c) 1996,97 Sergey Orlik              }
  6. {       - product manager of Borland Russia             }
  7. {                                                       }
  8. {*******************************************************}
  9. unit XDKfixEd;
  10. interface
  11. uses
  12.   DsgnIntf, Classes;
  13.  
  14. procedure Register;
  15.  
  16. implementation
  17.  
  18. uses
  19.   SysUtils, Graphics, Menus, Forms, Controls, Dialogs, Buttons, StdCtrls,
  20.   ComCtrls;
  21.  
  22. { TfixActivePageProperty }
  23. type
  24.   TfixActivePageProperty = class(TComponentProperty)
  25.   public
  26.     function GetAttributes: TPropertyAttributes; override;
  27.     procedure GetValues(Proc: TGetStrProc); override;
  28.   end;
  29.  
  30. function TfixActivePageProperty.GetAttributes: TPropertyAttributes;
  31. begin
  32.   Result := [paValueList];
  33. end;
  34.  
  35. procedure TfixActivePageProperty.GetValues(Proc: TGetStrProc);
  36. var
  37.   I: Integer;
  38.   Component: TComponent;
  39. begin
  40.   for I := 0 to {Designer.Form}TControl(GetComponent(0)).Owner.ComponentCount - 1 do //***
  41.   begin
  42.     Component := {Designer.Form}TControl(GetComponent(0)).Owner.Components[I]; //***
  43.     if (Component.Name <> '') and (Component is TTabSheet) and
  44.       (TTabSheet(Component).PageControl = GetComponent(0)) then
  45.       Proc(Component.Name);
  46.   end;
  47. end;
  48.  
  49. { TfixPageControlEditor }
  50. type
  51.   TfixPageControlEditor = class(TDefaultEditor)
  52.     procedure ExecuteVerb(Index: Integer); override;
  53.     function GetVerb(Index: Integer): string; override;
  54.     function GetVerbCount: Integer; override;
  55.   end;
  56.  
  57. resourcestring
  58.   SNewPage = 'Ne&w Page';
  59.   SNextPage = 'Ne&xt Page';
  60.   SPrevPage = '&Previous Page';
  61.  
  62. const
  63.   PageControlVerbs: array[0..2] of string = (SNewPage, SNextPage, SPrevPage);
  64.  
  65. procedure TfixPageControlEditor.ExecuteVerb(Index: Integer);
  66. var
  67.   PageControl: TPageControl;
  68.   Page: TTabSheet;
  69.   Designer: TFormDesigner;
  70. begin
  71.   if Component is TTabSheet then
  72.     PageControl := TTabSheet(Component).PageControl else
  73.     PageControl := TPageControl(Component);
  74.   if PageControl <> nil then
  75.   begin
  76.     Designer := Self.Designer;
  77.     if Index = 0 then
  78.     begin
  79.       Page := TTabSheet.Create(Component.Owner); //***
  80.       try
  81.         Page.Name := Designer.UniqueName(TTabSheet.ClassName);
  82.         Page.Parent := PageControl;
  83.         Page.PageControl := PageControl;
  84.       except
  85.         Page.Free;
  86.         raise;
  87.       end;
  88.       PageControl.ActivePage := Page;
  89.       Designer.SelectComponent(Page);
  90.       Designer.Modified;
  91.     end else
  92.     begin
  93.       Page := PageControl.FindNextPage(PageControl.ActivePage,
  94.         Index = 1, False);
  95.       if (Page <> nil) and (Page <> PageControl.ActivePage) then
  96.       begin
  97.         PageControl.ActivePage := Page;
  98.         if Component is TTabSheet then Designer.SelectComponent(Page);
  99.         Designer.Modified;
  100.       end;
  101.     end;
  102.   end;
  103. end;
  104.  
  105. function TfixPageControlEditor.GetVerb(Index: Integer): string;
  106. begin
  107.   Result := PageControlVerbs[Index];
  108. end;
  109.  
  110. function TfixPageControlEditor.GetVerbCount: Integer;
  111. begin
  112.   Result := High(PageControlVerbs) + 1;
  113. end;
  114.  
  115. { TfixToolBarEditor }
  116. type
  117.   TfixToolBarEditor = class(TDefaultEditor)
  118.     procedure ExecuteVerb(Index: Integer); override;
  119.     function GetVerb(Index: Integer): string; override;
  120.     function GetVerbCount: Integer; override;
  121.   end;
  122.  
  123. resourcestring
  124.   SNewBtn = 'New &Button';
  125.   SNewSpr = 'New Se¶tor';
  126. const
  127.   ToolBarVerbs: array[0..1] of string = (SNewBtn, SNewSpr);
  128.  
  129. procedure TfixToolBarEditor.ExecuteVerb(Index: Integer);
  130. var
  131.   ToolBar: TToolBar;
  132.   Btn: TToolButton;
  133.   Designer: TFormDesigner;
  134. begin
  135.   if Component is TToolButton then
  136.     ToolBar := TToolBar(TToolButton(Component).Parent) else 
  137.     ToolBar := TToolBar(Component);
  138.   if ToolBar <> nil then
  139.   begin
  140.     Designer := Self.Designer;
  141.     begin
  142.       Btn := TToolButton.Create(Component.Owner); //***
  143.       try
  144.         Btn.Name := Designer.UniqueName(TToolButton.ClassName);
  145.         Btn.Parent := ToolBar;
  146.         if Index = 0 then
  147.           Btn.Style:=tbsButton
  148.         else begin
  149.           Btn.Style:=tbsSeparator;
  150.           Btn.Width:=8;
  151.         end;
  152.       except
  153.         Btn.Free;
  154.         raise;
  155.       end;
  156.       Designer.SelectComponent(Btn);
  157.       Designer.Modified;
  158.     end;
  159.   end;
  160. end;
  161.  
  162. function TfixToolBarEditor.GetVerb(Index: Integer): string;
  163. begin
  164.   Result := ToolBarVerbs[Index];
  165. end;
  166.  
  167. function TfixToolBarEditor.GetVerbCount: Integer;
  168. begin
  169.   Result := High(ToolBarVerbs) + 1;
  170. end;
  171.  
  172. procedure Register;
  173. begin
  174.   RegisterComponentEditor(TPageControl, TfixPageControlEditor);
  175.   RegisterComponentEditor(TTabSheet, TfixPageControlEditor);
  176.   RegisterPropertyEditor(TypeInfo(TTabSheet), TPageControl, 'ActivePage', TfixActivePageProperty);
  177.  
  178.   RegisterComponentEditor(TToolBar, TfixToolBarEditor);
  179.   RegisterComponentEditor(TToolButton, TfixToolBarEditor);
  180. end;
  181.  
  182. end.
  183.