Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Eigene Klasse : Ereignisse ? (https://www.delphipraxis.net/133142-eigene-klasse-ereignisse.html)

Real-TTX 26. Apr 2009 18:38


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

Meflin 26. Apr 2009 18:41

Re: Eigene Klasse : Ereignisse ?
 
http://www.delphipraxis.net/internal...ct.php?t=15202

Bei Google suchenDelphi Klasse Event ;)

freak4fun 26. Apr 2009 18:42

Re: Eigene Klasse : Ereignisse ?
 
dsdt.info

mirage228 26. Apr 2009 18:43

Re: Eigene Klasse : Ereignisse ?
 
Moin,

Ereignisse bei OO gehen in Delphi so

Delphi-Quellcode:
type
  TDeinEreignis = procedure(Parameter1: Integer; Parameter2: string) of object;
Wichtig ist das "of object" - Das "Standardereignis", das häufig verwendet wird ist Delphi-Referenz durchsuchenTNotifyEvent.

In der Klasse siehts dann so aus
Delphi-Quellcode:
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');
Viele Grüße

Real-TTX 26. Apr 2009 18:56

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:
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;
Gruß, Real-TTX

Real-TTX 26. Apr 2009 18:59

Re: Eigene Klasse : Ereignisse ?
 
Mit

Delphi-Quellcode:
if @FEreignis <> nil then
  FEreignis(40, 'Test');
wird überprüft ob FEreignis vorhanden ist -> also definiert worden ist?


Seh ich das richtig? :)

mirage228 26. Apr 2009 19:01

Re: Eigene Klasse : Ereignisse ?
 
Zitat:

Zitat von Real-TTX
Was genau macht :
Delphi-Quellcode:
// Wenn Du es dann aufrufen willst z.B.
if @FEreignis <> nil then
  FEreignis(40, 'Test');

Also die erste Zeile ist äquivalent zu
Delphi-Quellcode:
if Assigned(FEreignis) then
und prüft, ob hinter "FEreignis" auch wirklich ein zugewiesenes Ereignis (siehe unten) oder nichts (Delphi-Referenz durchsuchennil) steckt.
Die zweite Zeile ist der Aufruf des Ereignis mit den gewünschten Parametern.

Zitat:

Warum eine Eigenschaft ? Wenn ich außerhalb der Klasse ein Ereigniss Definiere ?
Das Ereignis definierst Du außerhalb (z.B. in einem Formular)
Delphi-Quellcode:
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;
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.

Viele Grüße

Real-TTX 26. Apr 2009 19:17

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:
Klasse.DeinEreignis := Form1.MeinEreignis;
Ich weiß vorher ja nicht ob mich Frm1, Form2 oder Bla aufruft?

Ist es möglich das als Property oder ähnliches festzulegen, dass ich beim Aufruf dann folgendes habe :
Delphi-Quellcode:
var
 MeinKlasse : TMeineKlasse;

procedure Form1.ButtonClick....
begin
 MeineKlasse.Ereigniss := 'testereignis';
end;

procedure Form1.Testereigniss(blabla,blkbalbal);
begin
...
end;
Gruß, Real-TTX

mirage228 26. Apr 2009 19:19

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?

Real-TTX 26. Apr 2009 20:23

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.
Seite 1 von 3  1 23      

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