Nur eine Möglichkeit: erstell Dir eine
Unit, die TForm um eine Methode erweitert.
Delphi-Quellcode:
unit MyForms;
interface
uses Classes, Forms;
type
TForm =
class(Forms.TForm)
public
function FindOnClickEvent: TNotifyEvent;
virtual;
end;
implementation
{ TForm }
function TForm.FindOnClickEvent: TNotifyEvent;
begin
Result :=
nil;
end;
end.
Diese
Unit bindest Du in allen betroffenen Formunits im interface-Abschnitt am besten als letzte, auf jeden Fall aber nach Forms in die uses-Klausel ein und überschreibst die Methode.
Delphi-Quellcode:
unit uTest;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, MyForms;
(* Einbinden der eigenen Unit *)
type
TfrmMain =
class(TForm)
btnTest: TButton;
procedure btnTestClick(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
function FindOnClickEvent: TNotifyEvent;
override;
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
{ TForm29 }
procedure TfrmMain.btnTestClick(Sender: TObject);
begin
ShowMessage(
Name);
end;
function TfrmMain.FindOnClickEvent: TNotifyEvent;
begin
inherited;
Result := btnTestClick;
end;
end.
Nun kannst Du in der aufrufenden
Unit diese Methode aufrufen (auch diese muss MyForms einbinden), um den Handler zu ermitteln und zuzuweisen.
Delphi-Quellcode:
var
frm: TForm;
Event: TNotifyEvent;
begin
frm := frmMain;
Event := frm.FindOnClickEvent(); (* Ohne Klammern mag mein Compiler das gar nicht *)
SomeButton.OnClick := Event;
end;