home *** CD-ROM | disk | FTP | other *** search
/ PC Format Collection 48 / SENT14D.ISO / tech / delphi / disk12 / lib.pak / OLEREG.PAS < prev    next >
Encoding:
Pascal/Delphi Source File  |  1995-08-24  |  5.4 KB  |  216 lines

  1. unit OLEReg;
  2.  
  3. interface
  4.  
  5. uses WinTypes, WinProcs, Classes, DsgnIntf, Messages, Forms, Proxies;
  6.  
  7. type
  8.  
  9. {  TOleEditor }
  10.   TOleEditor = class(TDefaultEditor)
  11.   public
  12.     procedure Edit; override;
  13.     procedure ExecuteVerb(Index: Integer); override;
  14.     function GetVerb(Index: Integer): string; override;
  15.     function GetVerbCount: Integer; override;
  16.     procedure Copy; override;
  17.   end;
  18.  
  19.  
  20. { TOleObjTypeProperty
  21.   Property editor the Ole Class (e.g.Word,Excel) and Ole Doc properties   }
  22.  
  23.   TOleObjTypeProperty = class(TPropertyEditor)
  24.   public
  25.     function  GetAttributes: TPropertyAttributes; override;
  26.     procedure Edit; override;
  27.     function  GetValue: string; override;
  28.   end;
  29.  
  30.  
  31. { TOleObjItemProperty
  32.   Property editor the TOleItem - i.e. Paste Special Dlg   }
  33.  
  34.   TOleObjItemProperty = class(TPropertyEditor)
  35.   public
  36.     function  GetAttributes: TPropertyAttributes; override;
  37.     procedure Edit; override;
  38.     function  GetValue: string; override;
  39.   end;
  40.  
  41.   TLibOle = class (TLibOleHelper)
  42.   public
  43.     function  GetObjectMenuItemCount (Obj : TComponent) : 
  44.                 Integer; override;
  45.     function  GetObjectMenuItem (Obj : TComponent; Index : Integer) : 
  46.                 String; override;
  47.     procedure ObjectMenuItemAction (Obj : TComponent; Index : Integer);
  48.                 override;
  49.     procedure RegisterFormAsDropTarget (Form : TForm);      
  50.                 override;
  51.   end;    
  52.  
  53. procedure Register;
  54.  
  55. implementation
  56.  
  57. uses  BoleDefs, BoleIntf, ToCtrl, ToIntf, SysUtils, Dialogs, ToConsts,
  58.   LibConst, Controls, LibHelp;
  59.  
  60. {---------------------------------------}
  61. {  TOleEditor }
  62. procedure TOleEditor.Edit;
  63. begin
  64.   TOleContainer(Component).Active := True;
  65. end;
  66.  
  67.  
  68. procedure TOleEditor.ExecuteVerb(Index: Integer); 
  69. begin
  70.   TOleContainer(Component).ObjectMenuAction(Index);
  71. end;
  72.  
  73.  
  74. function TOleEditor.GetVerb(Index: Integer): string; 
  75. begin
  76.   Result := TOleContainer(Component).GetObjectMenuItem(Index);
  77. end;
  78.  
  79.  
  80. function TOleEditor.GetVerbCount: Integer; 
  81. begin
  82.   Result := TOleContainer(Component).GetObjectMenuItemCount;
  83.   if Result > 2 then
  84.     Result := Result - 2;  {remove the convert menu item and spacer}
  85. end;
  86.  
  87.  
  88. procedure TOleEditor.Copy; 
  89. begin
  90.   TOleContainer(Component).CopyToClipboard (False);
  91. end;
  92.  
  93.  
  94. { TOleObjTypeProperty }
  95.  
  96. function TOleObjTypeProperty.GetAttributes: TPropertyAttributes;
  97. begin
  98.   Result := inherited GetAttributes + [paDialog, paReadOnly]
  99.                       - [paMultiSelect, paSubProperties];
  100. end;
  101.  
  102.  
  103. procedure TOleObjTypeProperty.Edit;
  104. var
  105.   Ptr      : Pointer;
  106.   OleCtrl  : TOleContainer;
  107. begin
  108.   OleCtrl := TOleContainer (GetComponent(0));
  109.   if InsertOleObjectDlg (GetParentForm (OleCtrl), 
  110.       THelpContext(hcOleInsertObject), Ptr) = True then
  111.   begin
  112.     if OleCtrl.OleObjAllocated = True then
  113.     begin
  114.       if MessageDlg ( LoadStr(SInitInfo), mtConfirmation, mbOKCancel, 0) <> idOK then
  115.         Exit;
  116.     end;
  117.  
  118.     OleCtrl.PInitInfo := Ptr;
  119.     ReleaseOleInitInfo (Ptr);
  120.     Modified;
  121.   end;
  122. end;
  123.  
  124.  
  125. function TOleObjTypeProperty.GetValue: string;
  126. begin
  127.   if GetStrValue = '' then Result := ''
  128.   else Result := Format ('(%s)', [GetStrValue]);
  129. end;
  130.  
  131. {-----------------------------------------}
  132.  
  133. { TOleObjItemProperty }
  134.  
  135. function TOleObjItemProperty.GetAttributes: TPropertyAttributes;
  136. begin
  137.   Result := inherited GetAttributes + [paDialog, paReadOnly] 
  138.                       - [paMultiSelect, paSubProperties];
  139. end;
  140.  
  141.  
  142. procedure TOleObjItemProperty.Edit;
  143. var
  144.   Ptr      : Pointer;
  145.   OleCtrl  : TOleContainer;
  146. begin
  147.   OleCtrl := TOleContainer (GetComponent(0));
  148.   if PasteSpecialOleDlg (GetParentForm (OleCtrl), 
  149.       THelpContext (hcOlePasteSpecial), Ptr) = True then
  150.   begin
  151.     if OleCtrl.OleObjAllocated = True then
  152.     begin
  153.       if MessageDlg ( LoadStr(SInitInfo), mtConfirmation, mbOKCancel, 0) <> idOK then 
  154.         Exit;
  155.     end;
  156.  
  157.     OleCtrl.PInitInfo := Ptr;
  158.     ReleaseOleInitInfo (Ptr);
  159.     Modified;
  160.   end;
  161. end;
  162.  
  163.  
  164. function TOleObjItemProperty.GetValue: string;
  165. begin
  166.   Result := GetStrValue;
  167. end;
  168.  
  169. {-------}
  170.  
  171. function  TLibOle.GetObjectMenuItemCount (Obj : TComponent) : 
  172.             Integer;
  173. begin
  174.   Result := 0;
  175.   if Obj.InheritsFrom (TOleContainer) then
  176.     Result := TOleContainer (Obj).GetObjectMenuItemCount;
  177. end;
  178.  
  179.  
  180. function  TLibOle.GetObjectMenuItem (Obj : TComponent; Index : Integer) : 
  181.             String; 
  182. begin
  183.   Result := EmptyStr;
  184.   if Obj.InheritsFrom (TOleContainer) then
  185.     Result := TOleContainer (Obj).GetObjectMenuItem (Index);
  186. end;
  187.  
  188.  
  189. procedure TLibOle.ObjectMenuItemAction (Obj : TComponent; Index : Integer);
  190. begin
  191.   if Obj.InheritsFrom (TOleContainer) then
  192.     TOleContainer (Obj).ObjectMenuAction (Index);
  193. end;
  194.  
  195.  
  196. procedure TLibOle.RegisterFormAsDropTarget (Form : TForm);      
  197. begin
  198.   RegisterFormAsOleDropTarget (Form,
  199.     [OleFormat (BoleroObj.EmbedClipFmt, '%s', '%s', TRUE),
  200.      OleFormat (BoleroObj.LinkClipFmt,  '%s', '%s', TRUE)]);
  201. end;
  202.  
  203. procedure Register;
  204. begin
  205.   LibOleHelper := TLibOle.Create;
  206.   RegisterComponents(LoadStr(srSystem), [TOleContainer]);
  207.   RegisterPropertyEditor(TypeInfo(string), TOleContainer, 'ObjClass', TOleObjTypeProperty);
  208.   RegisterPropertyEditor(TypeInfo(string), TOleContainer, 'ObjDoc', TOleObjTypeProperty);
  209.   RegisterPropertyEditor(TypeInfo(string), TOleContainer, 'ObjItem', TOleObjItemProperty);
  210.   RegisterComponentEditor(TOleContainer, TOleEditor);
  211. end;
  212.  
  213. end.
  214.  
  215. 
  216.