Tray icon

Tags:    delphi

Hvordan får jeg mit program til at minimere sig ned til uret istedet for proceslinjen sådan at det kun ligger dernede ligesom man kan men winamp



5 svar postet i denne tråd vises herunder
0 indlæg har modtaget i alt 0 karma
Sorter efter stemmer Sorter efter dato
Hvordan får jeg mit program til at minimere sig ned til uret istedet for proceslinjen sådan at det kun ligger dernede ligesom man kan men winamp


Hvis du prøvede at søge på udv.dk ville du finde ud af dette er blevet besvaret mange gange, så husk det inden du opretter et indlæg.
Jeg har selv brugt koden fra denne tråd:

http://www.udvikleren.dk/eforum/thread.php?f=2&t=380&m=1462

Håber du kan bruge det :)

---
Hilsen Anders



Den har jeg læst men jeg fattede ikke en pind af det han sagde
jeg ville gerne have en fuld guide



Den har jeg læst men jeg fattede ikke en pind af det han sagde
jeg ville gerne have en fuld guide


Hvis du kunne forklare hvad du ikke forstod, kunne jeg prøve at hjælpe dig.

---
Hilsen Anders



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;



her er et rigtig godt komponent til at minimize sit program til tray
http://www.torry.net/vcl/system/trayicons/trayicon.zip

når man har lagt det i sin form dobbeltklikker du på den så du får onclick event,
der skriver man:

application.restore;
CoolTrayIcon1.IconVisible:=false; //hvis komponentet har det navn

Så dobbeltklikker man på formen for at få oncreate

og der skriver man

CoolTrayIcon1.Minimizetotray := false;





t