Bei Desktopanwendungen (Windows) a Meldungsfeld (Dialogfeld) wird verwendet, um den Benutzer der Anwendung darauf hinzuweisen, dass eine Aktion ausgeführt werden muss, dass ein Vorgang abgeschlossen wurde oder im Allgemeinen, um die Aufmerksamkeit des Benutzers zu erregen.
In Delphi gibt es verschiedene Möglichkeiten, dem Benutzer eine Nachricht anzuzeigen. Sie können entweder eine der in der RTL bereitgestellten vorgefertigten Routinen für die Anzeige von Nachrichten verwenden, z. B. ShowMessage oder InputBox. oder Sie können ein eigenes Dialogfeld erstellen (zur Wiederverwendung): CreateMessageDialog.
Ein häufiges Problem bei allen obigen Dialogfeldern ist, dass sie erfordern, dass die Anwendung aktiv ist, um dem Benutzer angezeigt zu werden. "Aktiv" bezieht sich auf eine Anwendung mit "Eingabefokus".
Wenn Sie wirklich die Aufmerksamkeit des Benutzers erregen und ihn davon abhalten möchten, etwas anderes zu tun, müssen Sie in der Lage sein, dies zu tun Ein systemmodales oberstes Meldungsfeld anzeigen, auch wenn Ihre Anwendung nicht aktiv ist.
Auch wenn dies kompliziert klingen mag, ist es dies in Wirklichkeit nicht.
Da Delphi problemlos auf die meisten Windows-API-Aufrufe zugreifen kann, reicht es aus, die Windows-API-Funktion "MessageBox" auszuführen.
Wird in der Unit "windows.pas" definiert - diejenige, die standardmäßig in der uses-Klausel jedes Delphi-Formulars enthalten ist, der Nachrichtenbox Mit dieser Funktion wird ein Meldungsfeld erstellt, angezeigt und bedient. Das Meldungsfeld enthält eine anwendungsspezifische Meldung und einen Titel sowie eine beliebige Kombination aus vordefinierten Symbolen und Drucktasten.
So wird die MessageBox deklariert:
Funktion Nachrichtenbox(
Der erste Parameter, hwnd, ist das Handle des Besitzerfensters 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.
Das lpText und lpCaption Geben Sie die Beschriftung und den Meldungstext an, die im Meldungsfeld angezeigt werden.
Letzter ist der uType Parameter und ist das interessanteste. Dieser Parameter gibt den Inhalt und das Verhalten des Dialogfelds an. Dieser Parameter kann eine Kombination verschiedener Flags sein.
Schauen wir uns ein Beispiel für die Erstellung eines modalen obersten Meldungsfelds an. Sie verarbeiten die Windows-Nachricht, die an alle ausgeführten Anwendungen gesendet wird, wenn sich das Systemdatum / die Systemzeit ändert, z. B. über 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 und zum Vordergrundfenster wird.
Hier ist der vollständige Beispielcode (TForm mit dem Namen "Form1" in Unit "unit1" definiert):
Einheit Einheit 1;
Schnittstelle
Verwendet
Windows, Nachrichten, SysUtils, Varianten, Klassen,
Grafiken, Steuerelemente, Formulare, Dialoge, ExtCtrls;
Art
TForm1 = Klasse(TForm)
Privat
Verfahren WMTimeChange (var Msg: TMessage); Botschaft WM_TIMECHANGE;
Öffentlichkeit
Öffentliche Erklärungen
Ende;
var
Form1: TForm1;
Implementierung$ R * .dfm
Verfahren 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 mindestens eine andere Anwendung aktiv ist. Führen Sie das Applet "Eigenschaften von Datum und Uhrzeit" in der Systemsteuerung aus und ändern Sie die Systemzeit. Sobald Sie auf die Schaltfläche "Ok" (im Applet) klicken, wird das oberste modale Meldungsfeld des Systems aus Ihrer inaktiven Anwendung angezeigt.