Menampilkan Kotak Pesan Modal Sistem TopMost Dengan Delphi

Dengan aplikasi desktop (Windows), a kotak pesan (dialog) digunakan untuk mengingatkan pengguna aplikasi bahwa beberapa tindakan perlu diambil, bahwa beberapa operasi telah selesai atau, secara umum, untuk mendapatkan perhatian pengguna.

Di Delphi, ada beberapa cara untuk menampilkan pesan kepada pengguna. Anda dapat menggunakan salah satu dari rutin menampilkan pesan yang sudah jadi yang disediakan di RTL, seperti ShowMessage atau InputBox; atau Anda dapat membuat kotak dialog Anda sendiri (untuk digunakan kembali): CreateMessageDialog.

Masalah umum dengan semua kotak dialog di atas adalah mereka mengharuskan aplikasi untuk aktif ditampilkan kepada pengguna. "Aktif" merujuk ketika aplikasi Anda memiliki "fokus input."

Jika Anda benar-benar ingin menarik perhatian pengguna dan menghentikan mereka dari melakukan hal lain, Anda harus bisa menampilkan kotak pesan sistem-modal paling atas bahkan ketika aplikasi Anda tidak aktif.

System-Modal Kotak Pesan Terbanyak

Meskipun ini mungkin terdengar rumit, dalam kenyataannya sebenarnya tidak.

instagram viewer

Karena Delphi dapat dengan mudah mengakses sebagian besar panggilan Windows API, menjalankan fungsi Windows MessageBox "MessageBox" akan melakukan triknya.

Didefinisikan di unit "windows.pas" - yang disertakan secara default dalam klausa penggunaan setiap bentuk Delphi, Kotak pesan fungsi membuat, menampilkan, dan mengoperasikan kotak pesan. Kotak pesan berisi pesan dan judul yang ditentukan aplikasi, bersama dengan kombinasi ikon dan tombol push yang telah ditentukan sebelumnya.

Beginilah cara MessageBox dideklarasikan:

fungsi Kotak pesan(

hWnd: HWND;
lpText,
lpKasus: PAnsiChar;
uType: Cardinal): integer;

Parameter pertama, hwnd, adalah pegangan jendela pemilik kotak pesan yang akan dibuat. jika Anda membuat kotak pesan saat kotak dialog ada, gunakan pegangan ke kotak dialog sebagai hnd parameter.

Itu lpTeks dan LPasi tentukan teks dan teks pesan yang ditampilkan di kotak pesan.

Terakhir adalah uType parameter dan yang paling menarik. Parameter ini menentukan konten dan perilaku kotak dialog. Parameter ini dapat berupa kombinasi dari berbagai flag.

Contoh: Kotak Peringatan Modal Sistem Ketika Tanggal / Waktu Sistem Berubah

Mari kita lihat contoh membuat kotak pesan sistem modal teratas. Anda akan menangani pesan Windows yang dikirim ke semua aplikasi yang sedang berjalan saat tanggal / waktu sistem berubah— Misalnya menggunakan applet Panel Kontrol "Properti Tanggal dan Waktu".

Fungsi MessageBox akan disebut sebagai:

 Windows. Kotak pesan(

 menangani,

 'Ini adalah pesan modal sistem' # 13 # 10 'dari aplikasi yang tidak aktif',

 'Pesan dari aplikasi yang tidak aktif!',

 MB_SYSTEMMODAL atau MB_SETFOREGROUND atau MB_TOPMOST atau MB_ICONHAND);

Bagian paling penting adalah parameter terakhir. "MB_SYSTEMMODAL atau MB_SETFOREGROUND atau MB_TOPMOST" memastikan kotak pesan adalah modal sistem, paling atas dan menjadi jendela latar depan.

  • MB_SYSTEMMODAL flag memastikan bahwa pengguna harus menanggapi kotak pesan sebelum melanjutkan pekerjaan di jendela yang diidentifikasi oleh parameter hWnd.
  • MB_TOPMOST flag menentukan bahwa kotak pesan harus ditempatkan di atas semua jendela yang tidak paling atas dan harus tetap di atasnya, bahkan ketika jendela dinonaktifkan.
  • MB_SETFOREGROUND bendera memastikan bahwa kotak pesan menjadi jendela latar depan.

Berikut adalah contoh kode lengkap (TForm bernama "Form1" didefinisikan dalam unit "unit1"):

satuan Unit 1;

antarmuka


menggunakan

 Windows, Pesan, SysUtils, Varian, Kelas,

 Grafik, Kontrol, Bentuk, Dialog, ExtCtrls;


Tipe

 TForm1 = kelas(TForm)

pribadi

prosedur WMTimeChange (var Msg: TMessage); pesan WM_TIMECHANGE;

publik

{Pernyataan publik}

akhir;

var

 Form1: TForm1;


penerapan{$ R * .dfm}


prosedur TForm1.WMTimeChange (var Msg: TMessage);

mulai

 Windows. Kotak pesan(

 menangani,

 'Ini adalah pesan modal sistem' # 13 # 10 'dari aplikasi yang tidak aktif',

 'Pesan dari aplikasi yang tidak aktif!',

 MB_SYSTEMMODAL atau MB_SETFOREGROUND atau MB_TOPMOST atau MB_ICONHAND);

akhir;

akhir.

Coba jalankan aplikasi sederhana ini. Pastikan aplikasi diminimalkan atau setidaknya beberapa aplikasi lain aktif. Jalankan applet Panel Kontrol "Properti Tanggal dan Waktu" dan ubah waktu sistem. Segera setelah Anda menekan tombol "Oke" (di jendela applet) kotak pesan modal sistem teratas dari aplikasi tidak aktif Anda akan ditampilkan.