Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi COM Events (https://www.delphipraxis.net/105369-com-events.html)

MarLe 20. Dez 2007 15:52


COM Events
 
Hallo,
Ich würde gerne Events von einem COM-Objekt benutzen.
lt. Suche hab ich folgende gefunden:
Zitat:

Wenn du die Typbibliothek importierst kannst per Checkbox angeben ob ein Delpi-Wrapper erzeugt werden. Wenn die Typdefinition passend ist erzeugt Delphi auch den Wrapper mit passend eingehängter Eventschnittstelle, sprich du kannst du Events genauso verwenden wie bei einem TEdit das OnChange-Event.

Importier dir doch die Typlibrary und lass dir von Delphi ein passendes VCL-Objekt mit passend verknüpfter Eventschnittstelle erstellen.
Unter VB.net funktioniert folgendes
Zitat:

Public WithEvents objError As XYZ.Error

Private Sub objError_OnError(ByVal ...)
Wie setze ich das in Delphi um???
bzw. wie finde ich auch aus der Wrapperdatei den passenden VCL-Objektnamen?

Gruß
MarLe

SyntaxError 19. Jun 2008 15:16

Re: COM Events
 
Hallo,

Mir ist nicht ganz klar was du mit VCL-Objektnamen meinst? Könntest du das näher erläutern? Wenn du einen Delphi-Wrapper für ein COM Objekt erstellst, dann sind die Events ja in der Klasse ersichtlich.
Gruss

MarLe 26. Jun 2008 14:18

Re: COM Events
 
Hallo,

Ja die jeweiligen Eventbezeichnungen kenne ich schon, aber ich schaffe die Umsetzung von vb auf Delphi nicht.
In vb sind das zwei Zeilen, wie würden diese in Delphi ausschauen, wie muss ich da was deklarieren?

Delphi-Quellcode:
var
  objErrorEvent: xxyyzz_TLB.XYZ.ErrorEvent;

procedure TForm1.???.OnError(...);
Gruß
MarLe

Brainshock 26. Jun 2008 15:04

Re: COM Events
 
Keine Ahnung ob du das meinst, aber hier mal ein Beispiel mit Hilfe der Powerpoint_TLB.


Powerpoint_TLB.pas

Delphi-Quellcode:
type
  TPowerPointApplicationSlideShowOnPrevious = procedure(ASender: TObject; const Wn: SlideShowWindow) of object;

TPowerPointApplication = class(TOleServer)
private
  FOnSlideShowOnPrevious: TPowerPointApplicationSlideShowOnPrevious;
published
  property OnSlideShowOnPrevious: TPowerPointApplicationSlideShowOnPrevious
    read FOnSlideShowOnPrevious write FOnSlideShowOnPrevious;
end;
Unit1.pas

Delphi-Quellcode:
TForm1 = class(TForm)
private
  FPowerpointApp: TPowerPointApplication;
  procedure DoSlideShowOnPrevious(ASender: TObject; const Wn: SlideShowWindow);
public
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  FPowerpointApp:= TPowerPointApplication.Create(Self);
  FPowerpointApp.OnSlideShowOnPrevious:= DoSlideShowOnPrevious; // <- Event zuweisen
end;

procedure TForm1.DoSlideShowOnPrevious(ASender: TObject; const Wn: SlideShowWindow);
begin
  // mache was beim Wechsel...
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz