Tray Icon? sederhana aja, Tray Icon adalah icon yang (secara default) ada di pojok kanan bawah sebelah kiri jam system.nah disini saya akan coba bahas trik bagaimana membuat program pake delphi yang dapat menampilkan tray ikon dan menghilangkannya kembali, serta klo iconnya diklik-kanan, ntar muncul popup menu.

rada susah sih jelasinnya, coz rada panjang. tapi mudah2an langkah2 berikut ini bermanfaat:

  1. pada form yang baru dibuat, tekan F12 untuk beralih ke jendela coding.. pada bagian uses, tambahkan unit ShellAPI
  2. pada bagian type, tambahkan private variabel yang bertipe TNotifyIconData, misal nama variabelnya TrayIcon
  3. private
    { Private declarations }
    TrayIcon: TNotifyIconData;
    
  4. tekan F12 lagi untuk beralih ke tampilan form anda, double klik form anda, nanti muncul procedure TForm1.FormCreate(Sender: TObject); dan tambahkan sintaks berikut ini untuk inisialisasi program
  5. TrayIcon.cbSize := SizeOf(TrayIcon);
    TrayIcon.Wnd := Self.Handle;
    TrayIcon.uID := 0;
    TrayIcon.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE;
    TrayIcon.uCallbackMessage := WM_MOUSEMOVE;
    TrayIcon.hIcon := Application.Icon.Handle;
    
  6. tambahkan object button pada form anda, captionnya beri nama Create tray icon. button ini buat meng-create tray icon. double klik button ini, ntar bakal kebentuk
    procedure TForm1.Button1Click(Sender: TObject); 

    lalu tambahkan sintaks berikut ini pada body procedure

  7. Shell_NotifyIcon(NIM_ADD, @TrayIcon);
  8. tambahkan lagi object button pada form anda, captionnya beri nama Hide tray icon. button ini buat meng-hide tray icon. double klik button ini, ntar bakal kebentuk
    procedure TForm1.Button2Click(Sender: TObject); 

    lalu tambahkan sintaks berikut ini pada body procedure

  9. Shell_NotifyIcon(NIM_DELETE, @TrayIcon);
  10. sekarang kita pilih object inspector, objectnya pilih form kita sekarang (defaultnya, pilih form1). pilih tag events, pilih events OnDestroy, double klik valuenya yang masih kosong, ntar bakal kebentuk
    procedure TForm1.FormDestroy(Sender: TObject);
  11. pada body procedure ini tambahkan sintaks yang sama seperti langkah nomor 5 (untuk menghilangkankan tray icon). hal ini bertujuan agar ketika aplikasi di-exit, tray icon ikut hilang dan memory yang digunakan di-release (dibebaskan)
  12. tambahkan object PopupMenu yang ada pada component Standard ke form anda skarang. double klik PopupMenu-nya, ntar muncul PopupMenu design. tambahin aja menu Show sama menu Exit. menu Show disini digunakan untuk menampilkan (me-maximize) kembali aplikasi yang sudah di-minimize, sedangkan Exit yang buat exit :p
  13. Pada Popupmenu Design, double klik PopupMenu yang Show, ntar muncul
    procedure TForm1.Show1Click(Sender: TObject); 

    dan tambahin sintaks berikut ini

  14. Application.Restore;
  15. Pada Popupmenu Design, double klik PopupMenu yang Exit, ntar muncul
    procedure TForm1.Exit1Click(Sender: TObject);

    dan tambahin sintaks berikut ini

  16. Application.Terminate
  17. wuih.. sabar.. masih belom beres. dikit lagi.
    tambahkan satu private procedure berikut ini untuk menampilkan popup menu.
  18. procedure TForm1.ShowPopupMenu;
    var
     CurPos: TPoint;
    begin
     GetCursorPos(CurPos);
     SetForegroundWindow(Self.Handle);
     PopupMenu1.Popup(CurPos.x, CurPos.y);
     PostMessage(Self.Handle, WM_NULL, 0, 0);
    end;
    

    jangan lupa menambahkan deklarasi procedure pada private declaration

    private
    { Private declarations }
    TrayIcon: TNotifyIconData;
     procedure ShowPopupMenu;  // ini deklarasi procedure pada private declaration
    
  19. skr kembali ke object inspector lagi. objectnya pilih form kita skarang (defaultnya pilih Form1), pilih tag events, pilih events OnMouseMove, double klik valuenya yang masih kosong, ntar bakal kebentuk
    procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);

    lalu tambahkan sintaks berikut ini pada body procedure tersebut

  20. if X = 517 then
     ShowPopupMenu;

yups, thats all.. selamat mencoba ^_^!
nambah: klo mau contoh source codenya, silahkan email saya

Advertisements