Einzelnen Beitrag anzeigen

Berni68

Registriert seit: 9. Jan 2006
Ort: Villingen
162 Beiträge
 
Delphi XE5 Professional
 
#1

Bei OLE Server auf Ereignisse reagieren

  Alt 6. Jun 2009, 18:36
Hallo zusammen,

das ist ein Ausschnitt der automatisch generierten Datei beim Typbibliothekenimport:

Delphi-Quellcode:
// *********************************************************************//
// DispIntf: FileAccessEventsObject
// Flags: (4096) Dispatchable
// GUID: {3D67DF18-9BC6-4470-A9E3-C820CB4E821C}
// *********************************************************************//
  FileAccessEventsObject = dispinterface
    ['{3D67DF18-9BC6-4470-A9E3-C820CB4E821C}']
    property Type_: ObjectTypeEnum readonly dispid 0;
    property Parent: Application readonly dispid 2130706434;
    property Application: Application readonly dispid 2130706433;
  end;

// *********************************************************************//
// DispIntf: FileAccessEventsSink
// Flags: (4096) Dispatchable
// GUID: {E51041E7-5DB6-4951-9F76-3ACA9B2E2A66}
// *********************************************************************//
  FileAccessEventsSink = dispinterface
    ['{E51041E7-5DB6-4951-9F76-3ACA9B2E2A66}']
    procedure OnFileResolution(const RelativeFileName: WideString; const LibraryName: WideString;
                               var CustomLogicalName: {??PSafeArray} OleVariant;
                               BeforeOrAfter: EventTimingEnum; const Context: NameValueMap;
                               out FullFileName: WideString; out HandlingCode: HandlingCodeEnum); dispid 50335665;
    procedure OnFileDirty(const RelativeFileName: WideString; const LibraryName: WideString;
                          var CustomLogicalName: {??PSafeArray} OleVariant;
                          const FullFileName: WideString; const DocumentObject: Document;
                          BeforeOrAfter: EventTimingEnum; const Context: NameValueMap;
                          out HandlingCode: HandlingCodeEnum); dispid 50335666;
  end;

// *********************************************************************//
// Schnittstelle: _IRxFileAccessEvents
// Flags: (272) Hidden OleAutomation
// GUID: {A612930B-F89B-41DB-82B1-3E1B0ED4C095}
// *********************************************************************//
  _IRxFileAccessEvents = interface(IUnknown)
    ['{A612930B-F89B-41DB-82B1-3E1B0ED4C095}']
    function Get_Type_(out Result: ObjectTypeEnum): HResult; stdcall;
    function Get_Parent(out Result: Application): HResult; stdcall;
    function Get_Application(out Result: Application): HResult; stdcall;
  end;

// *********************************************************************//
// Schnittstelle: IRxFileAccessEvents
// Flags: (384) NonExtensible OleAutomation
// GUID: {32E4A318-C5E8-11D2-B77F-0060B0F159EF}
// *********************************************************************//
  IRxFileAccessEvents = interface(IUnknown)
    ['{32E4A318-C5E8-11D2-B77F-0060B0F159EF}']
    function OnFileResolution(const RelativeFileName: WideString; const LibraryName: WideString;
                               var CustomLogicalName: PSafeArray; out FullFileName: WideString;
                               out HandlingCode: HandlingCodeEnum): HResult; stdcall;
    function OnFileDirty(const RelativeFileName: WideString; const LibraryName: WideString;
                          var CustomLogicalName: PSafeArray; const FullFileName: WideString;
                          const DocumentObject: Document; out HandlingCode: HandlingCodeEnum): HResult; stdcall;
  end;
kann mir eventuell jemand erklären, wie im Client die procedure OnFileDirty deklariert, eingebunden oder sonstwas werden muss, damit der Client das Ereignis mitbekommt.

Ein Beispiel wäre nett und wohl sehr hilfreich.

Warum findet man hierzu eigentlich keinerlei QuellcodeBeispiele?
Kurioserweise findet man ettliche Beispiele wie man solche OLE-Server bastelt, aber nicht wie man sie verwendet (allenfalls total abstrakte Ausführungen (incl. Delphihandbuch) ohne praktischen nutzen.)
Bernhard
  Mit Zitat antworten Zitat