Computerwissenschaften

Zeigen Sie ein modales TopMost-System-Meldungsfeld mit Delphi an

Bei Desktopanwendungen (Windows) wird ein Meldungsfeld (Dialogfeld) verwendet, um den Benutzer der Anwendung darauf aufmerksam zu machen, dass eine Aktion ausgeführt werden muss, dass ein Vorgang abgeschlossen wurde, oder um die Aufmerksamkeit der Benutzer im Allgemeinen zu erregen.

In Delphi gibt es verschiedene Möglichkeiten, dem Benutzer eine Nachricht anzuzeigen. Sie können entweder eine der vorgefertigten Routinen zur Anzeige von Nachrichten verwenden, die in der RTL bereitgestellt werden, z. B. ShowMessage oder InputBox. oder Sie können ein eigenes Dialogfeld erstellen (zur Wiederverwendung): CreateMessageDialog.

Ein häufiges Problem bei allen oben genannten Dialogfeldern besteht darin, dass die Anwendung aktiv sein muss, damit sie dem Benutzer angezeigt werden kann . „Aktiv“ bezieht sich darauf, wann Ihre Anwendung den „Eingabefokus“ hat.

Wenn Sie die Aufmerksamkeit des Benutzers wirklich auf sich ziehen und ihn davon abhalten möchten, etwas anderes zu tun, müssen Sie in der Lage sein, ein systemmodales oberstes Meldungsfeld anzuzeigen, auch wenn Ihre Anwendung nicht aktiv ist .

 

Systemmodal Top Most Message Box

Auch wenn dies kompliziert klingen mag, ist dies in Wirklichkeit nicht der Fall.

Da Delphi problemlos auf die meisten Windows-API-Aufrufe zugreifen kann, reicht die Ausführung der Windows-API-Funktion „MessageBox“ aus.

Die MessageBox- Funktion ist in der Einheit „windows.pas“ definiert – die Einheit, die standardmäßig in der Verwendungsklausel jedes Delphi-Formulars enthalten ist. Sie erstellt, zeigt an und betreibt ein Meldungsfeld. Das Meldungsfeld enthält eine anwendungsdefinierte Meldung und einen Titel sowie eine beliebige Kombination aus vordefinierten Symbolen und Drucktasten.

So wird die MessageBox deklariert:


 Funktion MessageBox (

hWnd: HWND;
lpText,
lpCaption: PAnsiChar;
uTyp: Kardinal): Ganzzahl;

Der erste Parameter, hwnd , ist das Handle des Eigentümerfensters des zu erstellenden Meldungsfelds. Wenn Sie ein Meldungsfeld erstellen, während ein Dialogfeld vorhanden ist, verwenden Sie ein Handle für das Dialogfeld als hWnd- Parameter.

Die lpText und lpCaption geben Sie die Beschriftung und den Nachrichtentext, der in dem Meldungsfeld angezeigt wird.

Last ist der uType- Parameter und der interessanteste. Dieser Parameter gibt den Inhalt und das Verhalten des Dialogfelds an. Dieser Parameter kann eine Kombination verschiedener Flags sein.

 

Beispiel: System Modal Warning Box Wenn sich das Datum / die Uhrzeit des Systems ändert

Schauen wir uns ein Beispiel für die Erstellung eines systemmodalen obersten Meldungsfelds an. Sie  verarbeiten die Windows-Nachricht. die an alle laufenden Anwendungen gesendet wird. wenn sich das Datum und die Uhrzeit des Systems ändern. Verwenden Sie beispielsweise das Applet „Eigenschaften von Datum und Uhrzeit“ in der Systemsteuerung.

Die MessageBox-Funktion wird wie folgt aufgerufen:


   Windows.MessageBox (

 

 Griff,

 

 'Dies ist eine systemmodale Nachricht' # 13 # 10'von einer inaktiven Anwendung ',

 

 'Eine Nachricht von einer inaktiven Anwendung!',

 

 MB_SYSTEMMODAL oder MB_SETFOREGROUND oder MB_TOPMOST oder MB_ICONHAND);

 

Das wichtigste Stück ist der letzte Parameter. Das „MB_SYSTEMMODAL oder MB_SETFOREGROUND oder MB_TOPMOST“ stellt sicher, dass das Meldungsfeld systemmodal ist, ganz oben steht und zum Vordergrundfenster wird.

  • Das Flag MB_SYSTEMMODAL stellt sicher, dass der Benutzer auf das Meldungsfeld antworten muss, bevor er die Arbeit in dem durch den Parameter hWnd angegebenen Fenster fortsetzt.
  • Das Flag MB_TOPMOST gibt an, dass das Meldungsfeld über allen nicht obersten Fenstern platziert werden soll und darüber bleiben soll, auch wenn das Fenster deaktiviert ist.
  • Das Flag MB_SETFOREGROUND stellt sicher, dass das Meldungsfeld zum Vordergrundfenster wird.

Hier ist der vollständige Beispielcode (TForm mit dem Namen „Form1“, definiert in Einheit „unit1“):


 Einheit Einheit1;

 

Schnittstelle

 

 .

 

 Verwendet

 

   Windows, Nachrichten, SysUtils, Varianten, Klassen,

 

   Grafiken, Steuerelemente, Formulare, Dialoge, ExtCtrls;

 


 

 Art

 

   TForm1=Klasse (TForm)

 

Privat

 

 Prozedur WMTimeChange (var Msg: TMessage); Nachricht WM_TIMECHANGE;

 

Öffentlichkeit

 

 {Öffentliche Erklärungen}

 

   Ende ;

 

var

 

   Form1: TForm1;

 


 

 Implementierung {$ R * .dfm}

 


 

 Prozedur TForm1.WMTimeChange (var Msg: TMessage);

 

Start

 

   Windows.MessageBox (

 

 Griff,

 

 'Dies ist eine systemmodale Nachricht' # 13 # 10'von einer inaktiven Anwendung ',

 

 'Eine Nachricht von einer inaktiven Anwendung!',

 

 MB_SYSTEMMODAL oder MB_SETFOREGROUND oder MB_TOPMOST oder MB_ICONHAND);

 

Ende ;

 

Ende .

 

Versuchen Sie, diese einfache Anwendung auszuführen. Stellen Sie sicher, dass die Anwendung minimiert ist oder zumindest eine andere Anwendung aktiv ist. Führen Sie das Applet „Datums- und Uhrzeit-Eigenschaften“ in der Systemsteuerung aus und ändern Sie die Systemzeit. Sobald Sie auf die Schaltfläche „OK“ (im Applet. klicken, wird das oberste Systemmodal-Meldungsfeld Ihrer inaktiven Anwendung angezeigt.

Similar Posts

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.