Jak wyświetlić modalne okno komunikatów systemu TopMost w Delphi?
Z nieaktywnej aplikacji Delphi
gilaxia/Getty Images
W przypadku aplikacji komputerowych (Windows) a komunikat (okno dialogowe) służy do ostrzegania użytkownika aplikacji, że należy wykonać jakąś czynność, że jakaś operacja została zakończona lub ogólnie do zwrócenia uwagi użytkowników.
W Delfy , istnieje kilka sposobów wyświetlania wiadomości użytkownikowi. Możesz użyć dowolnej z gotowych procedur wyświetlania komunikatów dostarczonych w RTL, takich jak ShowMessage lub InputBox; lub możesz utworzyć własne okno dialogowe (do ponownego użycia): CreateMessageDialog.
Częstym problemem we wszystkich powyższych oknach dialogowych jest to, że: wymagać, aby aplikacja była aktywna, aby była wyświetlana użytkownikowi . „Aktywny” odnosi się do sytuacji, w której aplikacja ma „koncentrację na wejściu”.
Jeśli naprawdę chcesz przyciągnąć uwagę użytkownika i powstrzymać go od robienia czegokolwiek innego, musisz być w stanie wyświetlaj systemowo modalne najwyższe okno komunikatu, nawet gdy Twoja aplikacja nie jest aktywna .
System-Modal Top Most Message Box
Choć może to brzmieć skomplikowanie, w rzeczywistości tak nie jest.
Ponieważ Delphi może łatwo uzyskać dostęp do większości wywołań Windows API, wykonanie funkcji Windows API 'MessageBox' załatwi sprawę.
Zdefiniowany w jednostce 'windows.pas' -- domyślnie zawartej w klauzuli uses każdego formularza Delphi, Skrzynka pocztowa funkcja tworzy, wyświetla i obsługuje okno komunikatu. Okno komunikatu zawiera komunikat i tytuł zdefiniowany przez aplikację, a także dowolną kombinację predefiniowanych ikon i przycisków.
Oto jak jest deklarowany MessageBox:
|_+_||_+_|
hWnd: HWND;
lpTekst,
lpPodpis : PANsiChar;
uType : Cardinal) : liczba całkowita;
Pierwszy parametr, hwnd , jest uchwytem okna właściciela tworzonego okna komunikatu. jeśli utworzysz okno komunikatu, gdy obecne jest okno dialogowe, użyj uchwytu okna dialogowego jako hWnd parametr.
The lpText oraz lpPodpis określ podpis i tekst komunikatu, który jest wyświetlany w oknie komunikatu.
Ostatni jest uTyp parametr i jest najciekawszy. Ten parametr określa zawartość i zachowanie okna dialogowego. Ten parametr może być kombinacją różnych flag.
Przykład: Systemowe okno ostrzeżenia modalnego, gdy systemowa data/godzina ulega zmianie
Rzućmy okiem na przykład tworzenia systemowego modalnego najwyższego okna komunikatu. będziesz obsłużyć wiadomość Windows który jest wysyłany do wszystkich uruchomionych aplikacji, gdy systemowe zmiany daty/czasu — na przykład za pomocą apletu Panelu sterowania „Właściwości daty i godziny”.
Funkcja MessageBox zostanie wywołana jako:
|_+_||_+_||_+_|
|_+_|
|_+_|
|_+_|
Najważniejszym elementem jest ostatni parametr. 'MB_SYSTEMMODAL lub MB_SETFOREGROUND lub MB_TOPMOST' zapewnia, że okno komunikatu jest modalne systemowe, górne i staje się oknem pierwszego planu.
Oto pełny przykładowy kod (TForm o nazwie „Form1” zdefiniowany w jednostce „unit1”):
|_+_||_+_||_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
|_+_|
Spróbuj uruchomić tę prostą aplikację. Upewnij się, że aplikacja jest zminimalizowana lub przynajmniej aktywna jest inna aplikacja. Uruchom aplet Panelu sterowania „Date and Time Properties” i zmień czas systemowy. Jak tylko naciśniesz przycisk „OK” (na aplet ) zostanie wyświetlone najwyższe okno komunikatu systemowego modalne z nieaktywnej aplikacji.