Wenn ein Callback genutzt werden soll geht es ungefähr so:
Delphi-Quellcode:
type
TCallbackProc = procedure(MyReturnValue:Integer) of Object;
TMyForm = class(TForm)
private
FCallback : TCallbackProc;
public
constructor Create(AOwner: TComponent; ResultCallback:TCallbackProc);
end;
constructor TMyForm.Create(AOwner: TComponent; ResultCallback:TCallbackProc);
begin
inherited Create(AOwner);
FCallback := ResultCallback;
end;
Im FormClose dann einfach das aufrufen, wenn 5 zurückgegeben werden soll,
evtl. mittels Assigned Prüfung absichern:
FCallback(5);
Aufruferseite:
TMyOtherForm = class(TForm)
private
procedure DoIt;
public
procedure GetResult(MyReturnValue:Integer);
end;
procedure TMyOtherForm.DoIt;
var
MyForm : TMyForm;
begin
MyForm := TMyForm.Create(self, Getresult);
MyForm.Show; // oder .ShowModal, bei .Show muss sich die andere Form
// selber freigeben, bei ShowModal müsste es hier passieren
end;
procedure TMyOtherForm.GetResult(MyReturnValue:Integer);
begin
ShowMessage(MyReturnValue.ToString);
end;
So ungefähr geht das und das ist in etwa auch, was der Formulareditor tut,
wenn man einem Steuerelement ein Event zuweist.