Offenbar hab ich das Problem falsch verstanden - Beitrag kann gelöscht werden ...
Irgendeine Idee, wie man sich da 'rein-hookt'?
Einen Hook benötigst du dazu nicht. Ich gehe mal davon aus, daß die
Unit deiner SubForm in der
Unit deiner MainForm unterhalb des Implementation-Abschnitts in der Uses-Klausel steht, so daß du von der MainForm aus die SubForm aufrufen/ansprechen kannst. Wenn dem so ist, deklarierst du in der SubForm ein Ereignis, dem du in der MainForm eine Methode zuweist:
Delphi-Quellcode:
UNIT SubForm;
INTERFACE
USES
Winapi.Windows,
Winapi.Messages,
System.SysUtils, System.Variants, System.Classes, System.Actions,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs;
TYPE
TToolButtonClickedEvent =
Procedure of Object;
TYPE
TFormSub =
CLASS(TForm)
...
PRIVATE { Private-Deklarationen }
fToolButtonClicked : TToolButtonClickedEvent;
...
PUBLIC { Public-Deklarationen }
...
Property OnToolButtonClicked : TToolButtonClickedEvent
read fToolButtonClicked
write fToolButtonClicked;
END;
VAR
FormMain: TFormMain;
IMPLEMENTATION
...
Da deinen ToolButtons vermutlich unterschiedliche Ereignisbehandlungsmethoden zugewiesen werden, löst du in jeder dieser Ereignisbehandlungen dieses Event aus:
Delphi-Quellcode:
Procedure TFormSub.MyToolBtn1Execute(Sender: TObject);
begin
MachIrgendwas;
...
If Assigned(fToolButtonClicked) Then fToolButtonClicked;
end;
In deiner MainForm-
Unit reagierst du dann mit der gewählten Methode auf das Ereignis in der SubForm:
Delphi-Quellcode:
Procedure TFormMain.FormActivate(Sender: TObject);
begin
...
SubForm.OnToolButtonClicked := MeineReaktionsMethode;
...
end;