![]() |
Eigene Klasse : Ereignisse ?
Hallo, leider finde ich bezgl der erstellung von Ereignissen in der eigenen Klasse nichts :(
Hat jemand ein kleines Beispiel ? Oder ein spez. Stichwort nachdem ich suchen kann? Danke :) Gruß, Real-TTX |
Re: Eigene Klasse : Ereignisse ?
|
Re: Eigene Klasse : Ereignisse ?
|
Re: Eigene Klasse : Ereignisse ?
Moin,
Ereignisse bei OO gehen in Delphi so
Delphi-Quellcode:
Wichtig ist das "of object" - Das "Standardereignis", das häufig verwendet wird ist
type
TDeinEreignis = procedure(Parameter1: Integer; Parameter2: string) of object; ![]() In der Klasse siehts dann so aus
Delphi-Quellcode:
Viele Grüße
type
TDeineKlasse = class private FEreignis: TDeinEreignis; public property DeinEreignis: TDeinEreignis read FEreignis write FEreignis; end; // Wenn Du es dann aufrufen willst z.B. if @FEreignis <> nil then FEreignis(40, 'Test'); |
Re: Eigene Klasse : Ereignisse ?
Erstmal Danke für die blitzschnellen Antworten.
Also, das mit dem Ereigniss habe ich nun noch nicht ganz so verstanden. Was genau macht :
Delphi-Quellcode:
// Wenn Du es dann aufrufen willst z.B.
if @FEreignis <> nil then FEreignis(40, 'Test'); Und :
Delphi-Quellcode:
Gruß, Real-TTX
type
TDeineKlasse = class private FEreignis: TDeinEreignis; public property DeinEreignis: TDeinEreignis read FEreignis write FEreignis; // Warum eine Eigenschaft ? Wenn ich außerhalb der Klasse ein Ereigniss Definiere ? end; |
Re: Eigene Klasse : Ereignisse ?
Mit
Delphi-Quellcode:
wird überprüft ob FEreignis vorhanden ist -> also definiert worden ist?
if @FEreignis <> nil then
FEreignis(40, 'Test'); Seh ich das richtig? :) |
Re: Eigene Klasse : Ereignisse ?
Zitat:
Delphi-Quellcode:
und prüft, ob hinter "FEreignis" auch wirklich ein zugewiesenes Ereignis (siehe unten) oder nichts (
if Assigned(FEreignis) then
![]() Die zweite Zeile ist der Aufruf des Ereignis mit den gewünschten Parametern. Zitat:
Delphi-Quellcode:
In der Klasse ist "FEreignis" nun ein Zeiger auf Form1.MeinEreignis. Wenn ich also später "FEreignis(40, 'Test')" schreibe, wird Form1.MeinEreignis mit diesen Parametern aufgerufen.
procedure TForm1.MeinEreignis(Parameter1: Integer; Parameter2: string);
begin // Reagiere auf das Ereignis hier... end; // Dann musst Du noch das Ereignis zuweisen var Klasse: TDeineKlasse; begin // ... Klasse.DeinEreignis := Form1.MeinEreignis; end; Viele Grüße |
Re: Eigene Klasse : Ereignisse ?
Ahh Ok :)
War ich ja garnicht so falsch. Aber warum muss ich in meiner Klasse das aufgerufene Ereigniss zuweisen :
Delphi-Quellcode:
Ich weiß vorher ja nicht ob mich Frm1, Form2 oder Bla aufruft?
Klasse.DeinEreignis := Form1.MeinEreignis;
Ist es möglich das als Property oder ähnliches festzulegen, dass ich beim Aufruf dann folgendes habe :
Delphi-Quellcode:
Gruß, Real-TTX
var
MeinKlasse : TMeineKlasse; procedure Form1.ButtonClick.... begin MeineKlasse.Ereigniss := 'testereignis'; end; procedure Form1.Testereigniss(blabla,blkbalbal); begin ... end; |
Re: Eigene Klasse : Ereignisse ?
Äh, moment!
Möchtest Du in Deiner Klasse ein Ereignis aufrufen oder möchtest Du einem Ereignis des Formulars oder so (ButtonKlick meinetwegen) eine Methode Deiner Klasse zuweisen? |
Re: Eigene Klasse : Ereignisse ?
In meiner Klasse ein Ereigniss aufrufen und in meinem Program (Unit von einer Form) das Ereigniss definieren.
Oder habe ich da nun was falsch verstanden ? Gruß, Real-TTX |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:10 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz