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

  1. {================================================================================
  2. Copyright (C) 1997-2001 Mills Enterprise
  3.  
  4. Unit     : rmOutlookReg
  5. Purpose  : Declares the component and property editors for the rmOutlook control
  6. Date     : 03-06-01
  7. Author   : Ryan J. Mills
  8. Version  : 1.80
  9. Notes    : This unit was originally based upon the work of Patrick O'Keeffe.
  10.            It was at his request that I took the component over and rm'ified it.
  11. ================================================================================}
  12.  
  13. unit rmOutlookReg;
  14.  
  15. interface
  16.  
  17. {$I CompilerDefines.INC}
  18.  
  19. {$ifdef BD6}
  20. uses
  21.   Classes, DesignIntf, DesignEditors, TypInfo;
  22. {$else}
  23. uses
  24.   Classes, DsgnIntf, TypInfo;
  25. {$endif}
  26.  
  27. type
  28.   TrmOutlookActivePageProperty = class(TComponentProperty)
  29.   public
  30.     function GetAttributes: TPropertyAttributes; override;
  31.     procedure GetValues(Proc: TGetStrProc); override;
  32.   end;
  33.  
  34.   TrmOutlookControlEditor = class(TDefaultEditor)
  35.     procedure ExecuteVerb(Index: Integer); override;
  36.     function GetVerb(Index: Integer): string; override;
  37.     function GetVerbCount: Integer; override;
  38.   end;
  39.  
  40.  
  41. implementation
  42.  
  43. uses rmOutlook;
  44.  
  45. const
  46.   SOutlookIndexError = 'Outlook Page Index Error';
  47.   StrAddPage = 'New Page';
  48.   StrNextPage = 'Next Page';
  49.   StrPrevPage = 'Previous Page';
  50.  
  51. { TrmOutlookActivePageProperty }
  52.  
  53. function TrmOutlookActivePageProperty.GetAttributes: TPropertyAttributes;
  54. begin
  55.   Result := [paValueList];
  56. end;
  57.  
  58. procedure TrmOutlookActivePageProperty.GetValues(Proc: TGetStrProc);
  59. var
  60.   I: Integer;
  61.   Component: TComponent;
  62. begin
  63. {$ifdef BD6}
  64.   for I := 0 to Designer.Root.ComponentCount - 1 do
  65.   begin
  66.     Component := Designer.Root.Components[I];
  67.     if (Component.Name <> '') and (Component is TrmOutLookPage) and
  68.       (TrmOutLookPage(Component).OutlookControl = GetComponent(0)) then
  69.       Proc(Component.Name);
  70.   end;
  71. {$else}
  72.   for I := 0 to Designer.Form.ComponentCount - 1 do
  73.   begin
  74.     Component := Designer.Form.Components[I];
  75.     if (Component.Name <> '') and (Component is TrmOutLookPage) and
  76.       (TrmOutLookPage(Component).OutlookControl = GetComponent(0)) then
  77.       Proc(Component.Name);
  78.   end;
  79. {$endif}
  80. end;
  81.  
  82. { TrmOutlookControlEditor }
  83.  
  84. procedure TrmOutlookControlEditor.ExecuteVerb(Index: Integer);
  85. var
  86.   OutlookControl: TrmOutLookControl;
  87.   Page: TrmOutLookPage;
  88. //  Designer: IDesigner;
  89. begin
  90.   if Component is TrmOutLookPage then
  91.     OutlookControl := TrmOutLookPage(Component).OutlookControl
  92.   else
  93.     OutlookControl := TrmOutLookControl(Component);
  94.  
  95.   if OutlookControl <> nil then
  96.   begin
  97. //    Designer := Self.Designer;
  98.     if Index = 0 then
  99.     begin
  100.       {$ifdef BD6}
  101.       Page := TrmOutLookPage.Create(Designer.Root);
  102.       {$else}
  103.       Page := TrmOutLookPage.Create(Designer.Form);
  104.       {$endif}
  105.       try
  106.         Page.Name := Designer.UniqueName(TrmOutLookPage.ClassName);
  107.         Page.OutlookControl := OutlookControl;
  108.         Page.Caption := Page.Name;
  109.       except
  110.         Page.Free;
  111.         raise;
  112.       end;
  113.       OutlookControl.ActivePage := Page;
  114.       Designer.SelectComponent(Page);
  115.       Designer.Modified;
  116.     end else
  117.     begin
  118.       Page := OutlookControl.FindNextPage(OutlookControl.ActivePage, Index = 1);
  119.       if (Page <> nil) and (Page <> OutlookControl.ActivePage) then
  120.       begin
  121.         OutlookControl.ActivePage := Page;
  122.         if Component is TrmOutLookPage then
  123.           Designer.SelectComponent(Page);
  124.         Designer.Modified;
  125.       end;
  126.     end;
  127.   end;
  128. end;
  129.  
  130. function TrmOutlookControlEditor.GetVerb(Index: Integer): string;
  131. begin
  132.   case Index of
  133.     0 : Result:= StrAddPage;
  134.     1 : Result:= StrNextPage;
  135.     2 : Result:= StrPrevPage;
  136.   end;
  137. end;
  138.  
  139. function TrmOutlookControlEditor.GetVerbCount: Integer;
  140. begin
  141.   Result := 3;
  142. end;
  143.  
  144. end.
  145.