Met bureaubladtoepassingen (Windows), a bericht (dialoogvenster) wordt gebruikt om de gebruiker van de applicatie te waarschuwen dat een actie moet worden ondernomen, dat een bewerking is voltooid of, in het algemeen, om de aandacht van gebruikers te trekken.
In Delphi zijn er verschillende manieren om een bericht aan de gebruiker weer te geven. U kunt een van de kant-en-klare berichten weergeven die in de RTL worden aangeboden, zoals ShowMessage of InputBox; of u kunt uw eigen dialoogvenster maken (voor hergebruik): CreateMessageDialog.
Een veel voorkomend probleem met alle bovenstaande dialoogvensters is dat ze vereisen dat de applicatie actief is om aan de gebruiker te worden getoond. "Actief" verwijst naar wanneer uw toepassing de "invoerfocus" heeft.
Als je echt de aandacht van de gebruiker wilt trekken en wilt voorkomen dat hij iets anders doet, moet je dat kunnen geef een systeem-modaal bovenste berichtenvak weer, zelfs wanneer uw toepassing niet actief is.
Hoewel dit misschien ingewikkeld klinkt, is het dat in werkelijkheid niet.
Aangezien Delphi gemakkelijk toegang heeft tot de meeste Windows API-aanroepen, is het uitvoeren van de "MessageBox" Windows API-functie voldoende.
Gedefinieerd in de eenheid "windows.pas" - degene die standaard is opgenomen in de gebruiksclausule van elk Delphi-formulier, de Berichten box functie creëert, toont en bedient een berichtvenster. Het berichtenvak bevat een door de toepassing gedefinieerd bericht en titel, samen met een combinatie van vooraf gedefinieerde pictogrammen en drukknoppen.
Dit is hoe de MessageBox wordt verklaard:
functie Berichten box(
De eerste parameter, hwnd, is het handvat van het eigenaarvenster van het te maken berichtenvak. Als u een berichtvenster maakt terwijl er een dialoogvenster aanwezig is, gebruikt u een greep naar het dialoogvenster als de hWnd parameter.
De lpText en lpCaption geef het bijschrift en de berichttekst op die in het berichtvak wordt weergegeven.
Laatste is de uType parameter en is het meest interessant. Deze parameter geeft de inhoud en het gedrag van het dialoogvenster aan. Deze parameter kan een combinatie van verschillende vlaggen zijn.
Laten we een voorbeeld bekijken van het maken van een systeemmodaal bovenste berichtenvak. Je verwerkt het Windows-bericht dat naar alle actieve toepassingen wordt verzonden wanneer de systeemdatum / -tijd verandert, bijvoorbeeld met behulp van de applet "Datum- en tijdeigenschappen".
De MessageBox-functie wordt genoemd als:
Windows.MessageBox (
omgaan met,
'Dit is een systeemmodaal bericht' # 13 # 10'van een inactieve applicatie ',
'Een bericht van een inactieve applicatie!',
MB_SYSTEMMODAL of MB_SETFOREGROUND of MB_TOPMOST of MB_ICONHAND);
Het belangrijkste stuk is de laatste parameter. De "MB_SYSTEMMODAL of MB_SETFOREGROUND of MB_TOPMOST" zorgt ervoor dat het berichtenvak systeemmodaal is, bovenaan en wordt het voorgrondvenster.
Hier is de volledige voorbeeldcode (TForm met de naam "Form1" gedefinieerd in eenheid "unit1"):
eenheid Hoofdstuk 1;
koppel
toepassingen
Windows, berichten, SysUtils, varianten, klassen,
Afbeeldingen, besturingselementen, formulieren, dialoogvensters, ExtCtrls;
type
TForm1 = klasse(TForm)
privaat
procedure WMTimeChange (var Msg: TMessage); bericht WM_TIMECHANGE;
openbaar
Publieke verklaringen
einde;
var
Form1: TForm1;
implementatie$ R * .dfm
procedure TForm1.WMTimeChange (var Msg: TMessage);
beginnen
Windows.MessageBox (
omgaan met,
'Dit is een systeemmodaal bericht' # 13 # 10'van een inactieve applicatie ',
'Een bericht van een inactieve applicatie!',
MB_SYSTEMMODAL of MB_SETFOREGROUND of MB_TOPMOST of MB_ICONHAND);
einde;
einde.
Probeer deze eenvoudige applicatie uit te voeren. Zorg ervoor dat de applicatie geminimaliseerd is of dat tenminste een andere applicatie actief is. Voer de applet "Datum- en tijdeigenschappen" uit en wijzig de systeemtijd. Zodra u op de knop "OK" (op de applet) drukt, wordt het bovenste systeemvak van uw inactieve toepassing weergegeven.