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 TNotifyEvent.
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 (nil) steckt.
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 02:16 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