Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Event mit Wertübergabe


huhn - So 24.10.10 14:24
Titel: Event mit Wertübergabe
Hi Forum,
ich erstelle gerade eine eigene Klasse bei der ich ein event integrieren will mit Wertübergabe. Nur irgendwie steh ich auf dem Schlauch wie ich das am dümmsten machen soll und mit der Suche bin ich auch nicht richtig glücklich geworden.

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
Type blubb = class
  ...
  published
    property Event2:xxxx read yyyy;
  end;

//später im programm
procedure TForm1.OnEvent2(Sender:Tobject; msg:string);
begin
.
.
.
end;

so hatt ich mir das vorgestellt, wie man das mit normalen Events macht, also TNotifyevent ist mir klar nur das zu erweitern klappt irgendwie net so. Ich hoffe ihr könnt mir helfen.

mfg huhn


Gausi - So 24.10.10 14:32

Definiere dir einen neuen Typ


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
Type
  TMeinTollesNeuesEvent = procedure(Sender: TObject, Dingens: Integer; Kirchens: Stringof Object;

// ...
// im Haupt-Typ

private
  fNeuesEvent : TMeinTollesNeuesEvent;

Public
  NeuesEvent: TMeinTollesNeuesEvent read fNeuesEvent write fNeuesEvent;


Xion - So 24.10.10 15:40

Beim Aufrufen in der Klasse nicht vergessen, zu überprüfen, ob das Event auch "aboniert" wurde:


Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TBlubb.SchmeissEvent;
begin
  if Assigned(fNeuesEvent) then
     fNeuesEvent(Self, 42'42');
end;


huhn - So 24.10.10 23:28

Danke euch ;)