home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 September / Chip_2001-09_cd1.bin / zkuste / delphi / kolekce / d56 / RMCTL.ZIP / rmCCTabsReg.pas < prev    next >
Pascal/Delphi Source File  |  2001-06-22  |  4KB  |  147 lines

  1. {================================================================================
  2. Copyright (C) 1997-2001 Mills Enterprise
  3.  
  4. Unit     : rmCCTabsReg
  5. Purpose  : Component editor for the CCTab controls
  6. Date     : 10-26-2000
  7. Author   : Ryan J. Mills
  8. Version  : 1.80
  9. ================================================================================}
  10.  
  11. unit rmCCTabsReg;
  12.  
  13. interface
  14.  
  15. {$I CompilerDefines.inc}
  16.  
  17. {$ifdef BD6}
  18. uses
  19.   DesignIntf, DesignEditors, TypInfo;    
  20. {$else}
  21. uses
  22.   DsgnIntf, TypInfo;
  23. {$endif}
  24.  
  25. type
  26.   TrmCCPageControlEditor = class(TComponentEditor)
  27.   private
  28.     procedure NewPage;
  29.     procedure ChangePage(Forward:boolean);
  30.   public
  31.     function GetVerb(index:integer):string; override;
  32.     function GetVerbCount:integer; override;
  33.     procedure ExecuteVerb(index:integer); override;
  34.     procedure Edit; Override;
  35.   end;
  36.  
  37. implementation
  38.  
  39. Uses sysutils, Classes, rmCCTabs;
  40.  
  41. { TrmCCPageControlEditor }
  42.  
  43. function TrmCCPageControlEditor.GetVerb(index:integer):string;
  44. begin
  45.      case index of
  46.           0:result := 'New Page';
  47.           1:result := 'Next Page';
  48.           2:result := 'Previous Page';
  49.      end;
  50. end;
  51.  
  52. function TrmCCPageControlEditor.GetVerbCount:integer;
  53. begin
  54.      result := 3;
  55. end;
  56.  
  57. procedure TrmCCPageControlEditor.Edit;
  58. var
  59.    eventname : string;
  60.    changeevent : TNotifyEvent;
  61.    ppi: PPropInfo;
  62.    wPageControl : trmccpagecontrol;
  63. begin
  64.      if component is trmcctabsheet then
  65.        wPageControl := trmcctabsheet(component).pagecontrol
  66.      else
  67.        wPageControl := trmccpagecontrol(component);
  68.  
  69.      changeevent := wPageControl.OnChange;
  70.      if assigned(changeevent) then
  71.         eventname := designer.getmethodname(tmethod(changeevent))
  72.      else
  73.      begin
  74.           eventname := wPageControl.name + 'Change';
  75.           ppi := GetPropInfo( wPageControl.classinfo,'OnChange');
  76.           changeevent := tnotifyevent(designer.createmethod(eventname,gettypedata(ppi.proptype^)));
  77.           wPageControl.onchange := changeevent;
  78.           designer.modified;
  79.      end;
  80.      designer.showmethod(eventname);
  81. end;
  82.  
  83. procedure TrmCCPageControlEditor.ExecuteVerb(index:integer);
  84. begin
  85.      case index of
  86.           0:NewPage;
  87.           1:ChangePage(true); //Next Page
  88.           2:ChangePage(False); //Previous Page
  89.      end;
  90. end;
  91.  
  92. procedure TrmCCPageControlEditor.NewPage;
  93. var
  94.    wPageControl : trmccpagecontrol;
  95.    wPage : trmcctabsheet;
  96. begin
  97.      if component is trmcctabsheet then
  98.        wPageControl := trmcctabsheet(component).pagecontrol
  99.      else
  100.        wPageControl := trmccpagecontrol(component);
  101.  
  102.      if wPageControl <> nil then
  103.      begin
  104.           {$ifdef BD6}
  105.           wPage := trmcctabsheet.Create(designer.Root);
  106.           {$else}
  107.           wPage := trmcctabsheet.Create(designer.Form);
  108.           {$endif}
  109.           try
  110.             wPage.name := designer.uniquename(trmcctabsheet.classname);
  111.             wPage.parent := wPageControl;
  112.             wPage.pagecontrol := wPageControl;
  113.             wPage.caption := wPage.name;
  114.           except
  115.             wPage.free;
  116.             raise;
  117.           end;
  118.           wPageControl.activepage := wPage;
  119.           designer.selectcomponent(wPage);
  120.           designer.modified;
  121.      end;
  122. end;
  123.  
  124. procedure TrmCCPageControlEditor.ChangePage(forward:boolean);
  125. var
  126.    wPageControl : trmccpagecontrol;
  127.    wPage : trmcctabsheet;
  128. begin
  129.      if component is trmcctabsheet then
  130.        wPageControl := trmcctabsheet(component).pagecontrol
  131.      else
  132.        wPageControl := trmccpagecontrol(component);
  133.  
  134.      if wPageControl <> nil then
  135.      begin
  136.        wPage := wPageControl.findnextpage(wPageControl.activepage, forward, false);
  137.        if (wPage <> nil) and (wPage <> wPageControl.activepage) then
  138.        begin
  139.          wPageControl.activepage := wPage;
  140.          if component is trmcctabsheet then designer.selectcomponent(wPage);
  141.          designer.modified;
  142.        end;
  143.      end;
  144. end;
  145.  
  146. end.
  147.