Kemaren temenku ngasih tahu aku eh bukan ngasih tahu tapi cuman dia ingin posting atu nyumbang artikelnya untuk diletakin diblog ini. Ya tentang tray bar icon ini, gimana cara bikinnya tanpa menggunakan komponen apapun yaitu dengan full coding.
Setelah aku baca kok menarik makanya aku posting aja ke blog ini supaya banyak yang bisa mengerti eh bisa tahu juga,sebelumnya memang aku pernah posting tentang tray bar icon, lihat artikel ini, tapi disitu kita menggunakan komponen bikinnanya pak Antony Pranata. Tapi bentar kalau masih belum donk tentang apa itu tray bar icon mending baca artikel ku dulu deh
Baik nggak usah basa-basi lagi, langsung aja 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);
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
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;
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);
Hide;
Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
7. Pada menu exit event OnCLick ketikkan code berikut.
Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
Application.ProcessMessages;
Application.Terminate;
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);
Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
- Sekarang, Anda bisa pasang iklan disini!
- Mau Tukeran Link Dengan Blog Ini? (Pengunjung Blog Ini Lebih dari 100/hari)
- Cek Jumlah Pengunjung
|