Einzelnen Beitrag anzeigen

hboy

Registriert seit: 16. Jan 2004
364 Beiträge
 
#3

AW: Event in andere Form übertragen

  Alt 8. Sep 2010, 15:15
Du kannst zum Beispiel eine TNotifyEvent-Variable beim eingebetteten TForm-Objekt anbieten, bei der sich das Hauptformular mit einem event handler eintragen kann.
Dann überschreibst du den message handler des Unterformulars mit

Delphi-Quellcode:
  protected
    procedure WndProc(var Message: TMessage); override;
mit

Delphi-Quellcode:
procedure TForm2.WndProc(var Message: TMessage);
begin
  inherited WndProc(Message);
  if assigned(NotifyMainFormEvent) then NotifyMainFormEvent(self);
end;
(ps. hier müsstest du die message in einer public-Variable zugänglich machen oder einen eigenen Eventtyp als procedure of object definieren, bei dem standardmäßig ein var-Parameter übergeben wird)


alternativ kannst du auch beim Hauptformular eigene messages definieren und mit

procedure OnForwardedFormEvent(var Message: TMessage); Message WM_IRGENDWAS;
abarbeiten, dabei ist WM_IRGENDWAS >= WM_USER. Du schickst dann Messages aus dem Unterformular heraus an das Hauptformular (PostMessage, SendMessage).

letzteres funktioniert auch über Threadgrenzen hinaus.
Power is nothing without TControl

Geändert von hboy ( 8. Sep 2010 um 15:26 Uhr)
  Mit Zitat antworten Zitat