Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
Delphi 12 Athens
|
AW: UnterForm mit Daten aus Hauptform versorgen
9. Mai 2015, 11:53
Suchst Du vielleicht so etwas?
Delphi-Quellcode:
type
(* Methodensignatur für eigenen Eventhandler *)
TOnSomethingHappenedEvent = procedure(Sender: TObject; var Value: integer) of object;
TBlubb = class
private
(* Feld des oben definierten Eventhandlers *)
FOnSomethingHappened: TOnSomethingHappenedEvent;
(* Das Feld, das ggf. von außen geändert werden soll *)
FValue: integer;
public
(* Auslösende Methode *)
procedure DoSomething;
property OnSomethingHappened: TOnSomethingHappenedEvent read FOnSomethingHappened write FOnSomethingHappened;
end;
...
{ TBlubb }
procedure TBlubb.DoSomething;
begin
(* Falls Handler zugewiesen, ausführen *)
if Assigned(FOnSomethingHappened) then
FOnSomethingHappened(self, FValue);
ShowMessage(IntToStr(FValue));
end;
Das Formular, das diese Klasse benutzt:
Delphi-Quellcode:
type
TForm1 = class(TForm)
btnGo: TButton;
procedure btnGoClick(Sender: TObject);
private
{ Private-Deklarationen }
procedure DoOnSomethingHappened(Sender: TObject; var Value: integer);
public
{ Public-Deklarationen }
end;
...
{ TForm1 }
procedure TForm1.DoOnSomethingHappened(Sender: TObject; var Value: integer);
begin
Value := 42;
end;
procedure TForm1.btnGoClick(Sender: TObject);
var
Blubb: TBlubb;
begin
Blubb := TBlubb.Create;
try
(* Eventhandler zuweisen *)
Blubb.OnSomethingHappened := DoOnSomethingHappened;
(* Auslösende Methode aufrufen *)
Blubb.DoSomething;
finally
Blubb.Free;
end;
end;
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
|