|
Mendisable
menu dan tombol Close
Oleh: Setiaji
Sebuah form biasanya mempunyai tiga tombol yang
terletak pada bagian title bar, yaitu tombol maximize,
minimize, close.
Untuk
Dengan tips di bawah ini Anda dapat mendisable
tombol/menu close.
procedure
TForm1.FormCreate(Sender: TObject);
var
hMenuHandle : HMENU;
begin
hMenuHandle := GetSystemMenu(Form1.Handle,
FALSE);
if (hMenuHandle <> 0)
then DeleteMenu(hMenuHandle,
SC_CLOSE, MF_BYCOMMAND);
end;
Langkah
pertama adalah mencari handle dari window menu
(atau System menu atau Control menu), caranya
yaitu dengan menggunakan fungsi GetSystemMenu.
function
GetSystemMenu (hWnd : HWND, bRevert : Boolean)
: HMENU;
Parameter
pertama dari fungsi GetSystemMenu adalah handle
dari window atau form. Dalam contoh ini nama formnya
adalah Form1.
Parameter kedua adalah bRevert. Jika nilai bRevert
bernilai True maka nilai balik dari fungsi GetSystemMenu
adalah NULL, sebaliknya jika bRevert bernilai
False maka nilai baliknya adalah handle dari copy
dari window menu.
Langkah
selanjutnya adalah "menghapus" item
pada window menu dengan menggunakan fungsi DeleteMenu.
function
DeleteMenu (hMenu : HMENU, uPosition : integer,
uFlags : integer): Boolean
Parameter
pertama adalah handle dari window menu (yang merupakan
hasil pencarian dengan fungsi GetSystemMenu).
Parameter kedua merupakan posisi atau pengenal
menu. Jika Anda mengisi parameter ketiga dengan
MF_BYCOMMAND maka parameter kedua dapat bernilai
SC_CLOSE, SC_MOVE, dan SC_SIZE. Sebaliknya jika
Anda mengisi parameter ketiga dengan MF_BYPOSITION
maka Anda dapat mengisi parameter kedua dengan
suatu nilai integer yang merepresentasikan menu
Close.
Fungsi
DeleteMenu akan mengembalikan nilai True jika
penghapusan menu berhasil dan mengembalikan nilai
False jika gagal.
Kedua perintah di bawah ini akan mendapatkan hasil
yang sama:
DeleteMenu(hMenuHandle,
6, MF_BYPOSITION);
DeleteMenu(hMenuHandle, SC_CLOSE, MF_BYCOMMAND)
|