Einzelnen Beitrag anzeigen

Perlsau
(Gast)

n/a Beiträge
 
#6

AW: Auf das Öffnen einer anderen Form/Dialog reagieren?

  Alt 15. Apr 2015, 08:23
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;

Geändert von Perlsau (15. Apr 2015 um 08:26 Uhr) Grund: Problem offenbar falsch verstanden
  Mit Zitat antworten Zitat