Selasa, April 01, 2008

Membuat ICONTRAY di Delphi

Ketika kita menjalankan sebuah aplikasi, maka biasanya akan tampil pada taskbar aplikasi yang dijalankan tersebut. Namun apabila kita ingin icon aplikasinya tampil bukan pada taskbar, tapi pada bagian sebelah kanan taskbar (icontray) maka kita harus membuat coding khusus agar ketika nanti program tersebut dijalankan, icon aplikasinya tampil pada bagian icontray.

Langkah-langkahnya adalah sebagai berikut.

1. Pada form utama project, tambahkan sebuah komponen PopupMenu. PopupMenu ini untuk menuliskan menu-menu yang ada pada project tersebut yang apabila kita klik kanan pada iconnya, maka menu-menu tersebut akan tampil. Misalnya kita punya 2 menu yaitu exit dan show.

2. Pada event onCreate form tersebut ketikan code sbb.

with NotifyIconData do
begin
hIcon := Icon.Handle;
StrPCopy(szTip, Application.Title);
Wnd := Handle;
uCallbackMessage := WM_ICONTRAY;
uID := 1;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
cbSize := sizeof(TNotifyIconData);
end;
Shell_NotifyIcon(NIM_ADD, @NotifyIconData);

3. Pada bagian uses tambahkan ShellApi dan tambahkan code berikut setelah deklarasi uses :

const
WM_ICONTRAY = WM_USER + 1; // User-defined message

4. Buat prosedur icontray pada bagian private, sbb.

private { Private declarations }
procedure Icontray(var Msg: TMessage); message WM_ICONTRAY;

procedure Tform1.Icontray(var Msg: TMessage);var CursorPos : TPoint;
begin
if Msg.lParam = WM_RBUTTONDOWN then
begin GetCursorPos(CursorPos);
SetForegroundWindow(Handle); // suggested by Berend Radstaat
PopupMenu1.Popup(CursorPos.x, CursorPos.y);
PostMessage(Handle, WM_NULL, 0, 0); // suggested by Berend Radstaat
end
else
inherited;
end;

5. Tambahkan variable NotifyIconData: TNotifyIconData; pada bagian deklarasi variable.

6. Pada event OnCLose form, ketikkan code berikut.

Action := caNone;
Hide;
Shell_NotifyIcon(NIM_ADD, @NotifyIconData);

7. Pada menu exit event OnCLick ketikkan code berikut.

Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
Application.ProcessMessages;
Application.Terminate;

8. Pada menu show event OnCLick ketikkan code berikut, agar ketika diklik menu show akan menampilkan form utama tersebut.

Show;
Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);

Tidak ada komentar:

Ayo Peka! Stop Pembalut Sekali Pakai

  “Saya paling tak suka kalau pegiat lingkungan berteriak betapa sulitnya mengelola sampah pembalut tapi dia sendiri tetap memakainya!“ *** ...