Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#7

AW: Alle Klicks auf Form abfangen

  Alt 19. Feb 2016, 14:32
Hmm..

Also, wenn dein Popup eine TForm-Ableitung ist, das Form mit 'Show' angezeigt wird und Du möchtest, dass dieses Formular 'geschlossen' wird Du neben dieses Formular in deine Anwendung clickst,
dann benutze doch das OnDeactivate-Event:
Delphi-Quellcode:
procedure TForm2.FormDeactivate(Sender: TObject);
begin
  Close;
end;

Das Gegenstück ist OnActivate

Nur ein Control mit einem Eingabefeld hat ein OnEnter und ein OnExit, da man 'hinein' und wieder 'hinaus' gehen kann.
Ein Formular selber hat kein Eingafeld, somit auch kein OnEnter/OnExit.
Das gleiche gilt für Scrollboxen, Panels, Buttons..

Wenn Du noch willst, dass die Popup-Form auch geschlossen wird, wenn deine Applikation den Focus verliert, dann musst du mit Application.HookMainWindow arbeiten.

Delphi-Quellcode:

function TForm1.AppHookFunc(var Message: TMessage): Boolean;
begin
  Result := False;
  if Message.Msg = CM_ACTIVATE then begin
// Hier alles was beim Aktivieren deiner Applikation
  end;
  if Message.Msg = CM_DEACTIVATE then begin
// Hier alles was beim DeAktivieren deiner Applikation
// Wie z.B. PopUp.Close;
  end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  Application.HookMainWindow(AppHookFunc);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  Application.UnHookMainWindow(AppHookFunc);
end;
  Mit Zitat antworten Zitat