home *** CD-ROM | disk | FTP | other *** search
/ DOS/V Power Report 1997 May / VPR9705A.ISO / VPR_DATA / PROGRAM / CBTRIAL / SETUP / DATA.Z / OLECTNRS.INT < prev    next >
Text File  |  1997-02-14  |  9KB  |  232 lines

  1.  
  2. {*******************************************************}
  3. {                                                       }
  4. {       Delphi Visual Component Library                 }
  5. {                                                       }
  6. {       Copyright (c) 1996 Borland International        }
  7. {                                                       }
  8. {*******************************************************}
  9.  
  10. unit OleCtnrs;
  11.  
  12. interface
  13.  
  14. uses Windows, Messages, CommCtrl, Ole2, OleDlg, SysUtils, Classes,
  15.   Controls, Forms, Menus, Graphics, OleAuto;
  16.  
  17. const
  18.   ovShow = -1;
  19.   ovOpen = -2;
  20.   ovHide = -3;
  21.   ovUIActivate = -4;
  22.   ovInPlaceActivate = -5;
  23.   ovDiscardUndoState = -6;
  24.   ovPrimary = -65536;
  25.  
  26. type
  27.   TOleContainer = class;
  28.   TOleForm = class;
  29.  
  30.   TOleClientSite = class(IOleClientSite)
  31.   public
  32.     constructor Create(Container: TOleContainer);
  33.     function QueryInterface(const iid: TIID; var obj): HResult; override;
  34.     function AddRef: Longint; override;
  35.     function Release: Longint; override;
  36.     function SaveObject: HResult; override;
  37.     function GetMoniker(dwAssign: Longint; dwWhichMoniker: Longint;
  38.       var mk: IMoniker): HResult; override;
  39.     function GetContainer(var container: IOleContainer): HResult; override;
  40.     function ShowObject: HResult; override;
  41.     function OnShowWindow(fShow: BOOL): HResult; override;
  42.     function RequestNewObjectLayout: HResult; override;
  43.   end;
  44.  
  45.   TOleInPlaceSite = class(IOleInPlaceSite)
  46.   public
  47.     constructor Create(Container: TOleContainer);
  48.     function QueryInterface(const iid: TIID; var obj): HResult; override;
  49.     function AddRef: Longint; override;
  50.     function Release: Longint; override;
  51.     function GetWindow(var wnd: HWnd): HResult; override;
  52.     function ContextSensitiveHelp(fEnterMode: BOOL): HResult; override;
  53.     function CanInPlaceActivate: HResult; override;
  54.     function OnInPlaceActivate: HResult; override;
  55.     function OnUIActivate: HResult; override;
  56.     function GetWindowContext(var frame: IOleInPlaceFrame;
  57.       var doc: IOleInPlaceUIWindow; var rcPosRect: TRect;
  58.       var rcClipRect: TRect; var frameInfo: TOleInPlaceFrameInfo): HResult;
  59.       override;
  60.     function Scroll(const scrollExtent: TPoint): HResult; override;
  61.     function OnUIDeactivate(fUndoable: BOOL): HResult; override;
  62.     function OnInPlaceDeactivate: HResult; override;
  63.     function DiscardUndoState: HResult; override;
  64.     function DeactivateAndUndo: HResult; override;
  65.     function OnPosRectChange(const rcPosRect: TRect): HResult; override;
  66.   end;
  67.  
  68.   TAdviseSink = class(IAdviseSink)
  69.   public
  70.     constructor Create(Container: TOleContainer);
  71.     function QueryInterface(const iid: TIID; var obj): HResult; override;
  72.     function AddRef: Longint; override;
  73.     function Release: Longint; override;
  74.     procedure OnDataChange(var formatetc: TFormatEtc; var stgmed: TStgMedium); override;
  75.     procedure OnViewChange(dwAspect: Longint; lindex: Longint); override;
  76.     procedure OnRename(mk: IMoniker); override;
  77.     procedure OnSave; override;
  78.     procedure OnClose; override;
  79.   end;
  80.  
  81.   TAutoActivate = (aaManual, aaGetFocus, aaDoubleClick);
  82.  
  83.   TSizeMode = (smClip, smCenter, smScale, smStretch, smAutoSize);
  84.  
  85.   TObjectState = (osEmpty, osLoaded, osRunning, osOpen, osInPlaceActive,
  86.     osUIActive);
  87.  
  88.   TCreateType = (ctNewObject, ctFromFile, ctLinkToFile, ctFromData,
  89.     ctLinkFromData);
  90.  
  91.   TCreateInfo = record
  92.     CreateType: TCreateType;
  93.     ShowAsIcon: Boolean;
  94.     IconMetaPict: HGlobal;
  95.     ClassID: TCLSID;
  96.     FileName: string;
  97.     DataObject: IDataObject;
  98.   end;
  99.  
  100.   TVerbInfo = record
  101.     Verb: Smallint;
  102.     Flags: Word;
  103.   end;
  104.  
  105.   TObjectMoveEvent = procedure(OleContainer: TOleContainer;
  106.     const Bounds: TRect) of object;
  107.  
  108.   TOleContainer = class(TCustomControl)
  109.   protected
  110.     procedure CreateParams(var Params: TCreateParams); override;
  111.     procedure DblClick; override;
  112.     procedure DefineProperties(Filer: TFiler); override;
  113.     procedure DoEnter; override;
  114.     function GetPopupMenu: TPopupMenu; override;
  115.     procedure KeyDown(var Key: Word; Shift: TShiftState); override;
  116.     procedure MouseDown(Button: TMouseButton; Shift: TShiftState;
  117.       X, Y: Integer); override;
  118.     procedure Paint; override;
  119.   public
  120.     constructor Create(AOwner: TComponent); override;
  121.     destructor Destroy; override;
  122.     function ChangeIconDialog: Boolean;
  123.     procedure Close;
  124.     procedure Copy;
  125.     procedure CreateLinkToFile(const FileName: string; Iconic: Boolean);
  126.     procedure CreateObject(const OleClassName: string; Iconic: Boolean);
  127.     procedure CreateObjectFromFile(const FileName: string; Iconic: Boolean);
  128.     procedure CreateObjectFromInfo(const CreateInfo: TCreateInfo);
  129.     procedure DestroyObject;
  130.     procedure DoVerb(Verb: Integer);
  131.     function GetIconMetaPict: HGlobal;
  132.     function InsertObjectDialog: Boolean;
  133.     procedure LoadFromFile(const FileName: string);
  134.     procedure LoadFromStream(Stream: TStream);
  135.     function ObjectPropertiesDialog: Boolean;
  136.     procedure Paste;
  137.     function PasteSpecialDialog: Boolean;
  138.     procedure Run;
  139.     procedure SaveToFile(const FileName: string);
  140.     procedure SaveToStream(Stream: TStream);
  141.     procedure UpdateObject;
  142.     procedure UpdateVerbs;
  143.     property CanPaste: Boolean;
  144.     property Linked: Boolean;
  145.     property Modified: Boolean;
  146.     property NewInserted: Boolean;
  147.     property ObjectVerbs: TStrings;
  148.     property OleClassName: string;
  149.     property OleObject: Variant;
  150.     property OleObjectInterface: IOleObject;
  151.     property PrimaryVerb: Integer;
  152.     property SourceDoc: string;
  153.     property State: TObjectState;
  154.     property StorageInterface: IStorage;
  155.   published
  156.     property AllowInPlace: Boolean default True;
  157.     property AutoActivate: TAutoActivate default aaDoubleClick;
  158.     property AutoVerbMenu: Boolean default True;
  159.     property Align;
  160.     property BorderStyle: TBorderStyle default bsSingle;
  161.     property Caption;
  162.     property Color;
  163.     property CopyOnSave: Boolean default True;
  164.     property Ctl3D;
  165.     property DragCursor;
  166.     property DragMode;
  167.     property Enabled;
  168.     property Iconic: Boolean;
  169.     property OldStreamFormat: Boolean default False;
  170.     property ParentColor default False;
  171.     property ParentCtl3D;
  172.     property ParentShowHint;
  173.     property PopupMenu;
  174.     property ShowHint;
  175.     property SizeMode: TSizeMode default smClip;
  176.     property TabOrder;
  177.     property TabStop default True;
  178.     property Visible;
  179.     property OnActivate: TNotifyEvent;
  180.     property OnDeactivate: TNotifyEvent;
  181.     property OnDragDrop;
  182.     property OnDragOver;
  183.     property OnEndDrag;
  184.     property OnEnter;
  185.     property OnExit;
  186.     property OnMouseDown;
  187.     property OnMouseMove;
  188.     property OnMouseUp;
  189.     property OnKeyDown;
  190.     property OnKeyPress;
  191.     property OnKeyUp;
  192.     property OnObjectMove: TObjectMoveEvent;
  193.     property OnResize: TNotifyEvent;
  194.     property OnStartDrag;
  195.   end;
  196.  
  197.   TOleInPlaceFrame = class(IOleInPlaceFrame)
  198.   public
  199.     constructor Create(OleForm: TOleForm);
  200.     function QueryInterface(const iid: TIID; var obj): HResult; override;
  201.     function AddRef: Longint; override;
  202.     function Release: Longint; override;
  203.     function GetWindow(var wnd: HWnd): HResult; override;
  204.     function ContextSensitiveHelp(fEnterMode: BOOL): HResult; override;
  205.     function GetBorder(var rectBorder: TRect): HResult; override;
  206.     function RequestBorderSpace(const borderwidths: TRect): HResult; override;
  207.     function SetBorderSpace(pborderwidths: PRect): HResult; override;
  208.     function SetActiveObject(activeObject: IOleInPlaceActiveObject;
  209.       pszObjName: POleStr): HResult; override;
  210.     function InsertMenus(hmenuShared: HMenu;
  211.       var menuWidths: TOleMenuGroupWidths): HResult; override;
  212.     function SetMenu(hmenuShared: HMenu; holemenu: HMenu;
  213.       hwndActiveObject: HWnd): HResult; override;
  214.     function RemoveMenus(hmenuShared: HMenu): HResult; override;
  215.     function SetStatusText(pszStatusText: POleStr): HResult; override;
  216.     function EnableModeless(fEnable: BOOL): HResult; override;
  217.     function TranslateAccelerator(var msg: TMsg; wID: Word): HResult; override;
  218.   end;
  219.  
  220.   TOleForm = class(TOleFormObject)
  221.   protected
  222.     procedure OnDestroy; override;
  223.     procedure OnResize; override;
  224.   public
  225.     constructor Create(Form: TForm);
  226.     destructor Destroy; override;
  227.   end;
  228.  
  229. procedure DestroyMetaPict(MetaPict: HGlobal);
  230.  
  231. implementation
  232.