Frage

Ich habe einen Timer bekam in meinem Delphi MDI-Anwendung ausgeführt wird, und ich möchte es verwenden, um eine Nachricht Pop-up, wenn etwas in den Hintergrund ändert. Aber ich will nicht, dass Meldung Pop-up, wenn die die Anwendung einen modalen Dialog im Vordergrund hat, weil der Benutzer nichts dagegen tun kann.

Also, was ich würde gerne wissen, wie kann ich für die Existenz eines modalen Dialogs in meiner Anwendung überprüfen?

War es hilfreich?

Lösung

Sie können mit diesem Code versuchen:

var
  ActForm: TCustomForm;
begin
  ActForm := Screen.ActiveForm;
  if (ActForm = nil) or not (fsModal in ActForm.FormState) then begin

  end;
end;

ich mit Delphi 4 getestet, funktioniert für mich.

[EDIT]: Aber Sie sollten darüber nachdenken, ob wirklich eine Form Aufspringen und Fokus zu stehlen ist eine gute Idee. Es hängt von Ihrer Anwendung, aber wenn ein Benutzer zur Zeit etwas in ein Eingabefeld eingeben wird, oder mit der Maus etwas zu tun, dann könnte dies ihren Workflow brechen.

Andere Tipps

Seit Delphi 2005 haben Sie einen ModalLevel Immobilien auf TApplication. Es zählt die Anzahl der modalen Formen in der Anwendung geöffnet.

Vielleicht ist die Lösung tatsächlich einen Hinweis Pop-up, das Fokus nicht stehlen. Ein anklickbare Hinweis irgendwo sichtbar, aber nicht zu aufdringlich. Wenn also der Benutzer Maßnahmen ergreifen will, können sie oder können sie fertig machen, was sie taten, dann handeln. Oder vielleicht ist es ganz ignorieren.

AnyPopup () Funktion

Über GetLastActivePopup (). Es kann Rückgabewert gleich der hWnd Parameter ist, wenn

  • Das Fenster von hWnd identifiziert war zuletzt aktiv.
  • Das Fenster von hWnd identifiziert besitzt keine eigenen Pop-up-Fenster.
  • Die Fenster identifiziert durch hWnd ist kein Top-Level-Fenster, oder es wird von einem anderen Fenster gehört.

Heute Benutzer histrio richtig in ein anderer Thread, der gerade überwacht modalen Formen Delphi ist nicht ausreichend; Windows kann auch modale Dialoge haben.

in einem anderen Thread antworten zeigt Ihnen, wie für das überprüfen.

- jeroen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top