tray??

Tags:    delphi

Er der nogen der ved hvordan man kan få sit program til at lægge i tray??

Jeg brugre Delphi 6.


M.V.H. Kim



2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Er der nogen der ved hvordan man kan få sit program til at lægge i tray??

Jeg brugre Delphi 6.


M.V.H. Kim



Jeg har tidligere besvaret et lignende spørgsmål så jeg iler med et kopi af min besvarelse. Du kan naturligvis - som foreslået - benytte en komponent. Men det er så simpel at gøre det selv så hvorfor ikke få en mere dybtgående viden om hvordan det gøres?

A) tilføj ShellAPI i din uses klausul.


B) Opret en selv defineret windows message identifikation , altså eksempelvis:

const WM_TRAYMessage = WM_USER + 1;


C) Tilføj den tilhørende message handle procedure, altså eksempelvis:

procedure TrayMessage(var message: TMessage); message WM_TRAYMESSAGE;

D) Opret en variabel af typen TNotifyIconData, her eksempelvis tray: TNotifyIcondata som variabel i klassen.

E) i formens OnCreate procedure initialiseres den variabel som blev oprettet under pkt D:

with Tray do
begin
cbSize := SizeOf(Tray);
Wnd := Handle;
uID := 0;
uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
uCallbackMessage:= WM_TRAYMessage;
hIcon := Application.Icon.Handle;
szTip := 'hint message';
end;
Shell_NotifyIcon(NIM_ADD, @Tray);


I den tilhørende destroy metode skal tilføje følgende kald:

Shell_NotifyIcon(NIM_DELETE, @Tray);

F) proceduren fra punkt C kunne se således ud:

procedure TMain.TrayMessage(var message: TMessage);
var
p: TPoint;
begin
case Message.LParam of
WM_RBUTTONDOWN:
begin
SetForegroundWindow(Handle);
GetCursorPos(P);
PopupMenu1.Popup(P.X, P.y);
PostMessage(Handle, WM_NULL, 0,0);
end;
end;
end;

Popup menuen kunne indeholde to menupunkter Vis og skjul. I den tilførende vis metode kaldes Show(), hvilket selvsagt medfører at dit skærmbillede vises, mens omvendt Skjul kalder hide();.

G) i projektfilen skrives eksempelvis:

Application.Initialize;
Application.ShowMainForm := false;
Application.CreateForm(TMain, Main);
Application.Run;


Herefter compiles- og køres programmet. Klik på ikonet i systray (hvilket gerne skulle vises din popup menu) og vælge vis. Dit skærmbilledet skulle herefter gerne dukke frem.


m.v.h.

Jørgen





Er der nogen der ved hvordan man kan få sit program til at lægge i tray??

Jeg brugre Delphi 6.


M.V.H. Kim


Prøv at gå ind på Torry og hent et komponent der har noget med tray at gøre. Du kunne f.eks. søge efter Tray eller trayicon. Du skal bruge det komponent, for at kunne bruge Trayicon. Der findes mange slags komponenter.

Andreas Andersen
www.friserverplads.dk/flitsbue/




t