Det der lille ikon nede ved uret

Tags:    delphi

<< < 12 > >>
jeg udlover 100 up til den der kan forklare mig, med ord og ikke mindst kode, hvordan jeg får mit program til at optræde, som et lille ikon nede ved siden af uret, istedet for den normale måde.



11 svar postet i denne tråd vises herunder
4 indlæg har modtaget i alt 7 karma
Sorter efter stemmer Sorter efter dato
jeg bad egentlig bare om et par linjers kode, plus en forklaring hvorfor de virker, ikke et component


Hej,

Når du skal ha' et ikon ned i taskbar'en skal du bruge shell'en.
Du kommunikere med taskbaren vha. "Shell_NotifyIcon" funktionen samt en "callback message".

Du har 3 forskellige metoder til rådighed via. Shell_NotifyIcon:
NIM_ADD, NIM_DELETE og NIM_MODIFY.
Hver af disse metoder kan opertte/slette/opdatere både ikon og tooltip.
For at sende disse informationer/kommandoer skal du også bruge strukturen "TNotifyIconData".
Denne struktur indeholder alle informationer omkring callback, ikon, tooltip osv.

Jeg har skrevet et stykke kode som viser hvordan du selv kan opdatere et trayicon.
Det er skrevet direkte ind her, så der kan være fejl forskellige steder men du burde
få et nogenlunde overblik/idé om hvordan det kan gøres. Alt funktionaliteten som taskbaren
stiller til rådighed er ikke med da det ville være alt for stort et område at gennemgå lige nu.

Koden er en klasse som kan oprette/slette og opdatere et trayicon samt sætte tooltip og få
beskeder når brugeren trykker med musen på ikonet.

Fold kodeboks ind/udKode 


For at bruge klasse kan du gøre følgende:

Fold kodeboks ind/udKode 


Jeg håber det giver dig en lidt størrer indsigt i hvordan det skal gøres.

mvh
Michael.



jeg udlover 100 up til den der kan forklare mig, med ord og ikke mindst kode, hvordan jeg får mit program til at optræde, som et lille ikon nede ved siden af uret, istedet for den normale måde.


Brug et lille - brugervenligt - komponent der hedder CoolTrayIcon...
I det ligger der to former for trayicons. Et til en slags rulletekst og et til billeder...
Du kan hente det mange steder... Jeg fandt lige hurtigt et link til dig her:
http://www.delphi32.com/vcl/5086/

Hvis ikke det virker, så gå ind på google og søg efter "cooltrayicon+component"

Håber du kan bruge det...

Brian



jeg udlover 100 up til den der kan forklare mig, med ord og ikke mindst kode, hvordan jeg får mit program til at optræde, som et lille ikon nede ved siden af uret, istedet for den normale måde.


Normalt vil jeg gerne kode tingene selv, men her er virkelig noget der kan _alt_ du kan have brug for.
Komponentet jeg taler om hedder TCoolTrayIcon og kan hentes fra www.torry.net (direkte link: http://www.torry.net/vcl/system/trayicons/trayicon.zip )
Der følger adskillige eksempler på hvordan det skal bruges med.


Mvh,

Thomas Nielsen



jeg udlover 100 up til den der kan forklare mig, med ord og ikke mindst kode, hvordan jeg får mit program til at optræde, som et lille ikon nede ved siden af uret, istedet for den normale måde.


Det skulle kunne gøres med nogle Windows API kald

I Am The Cyborg, and i'm here to serve :)



hmmmm...

Præcis det samme... :-)



Præcis det samme... :-)

Ups, min fejl der :)

Mvh,

Thomas Nielsen



jeg bad egentlig bare om et par linjers kode, plus en forklaring hvorfor de virker, ikke et component



jeg bad egentlig bare om et par linjers kode, plus en forklaring hvorfor de virker, ikke et component


Det er helt klart den nemmeste måde at lave det på...
Langt de fleste indstillinger for TCoolTrayIcon sker nemlig i Object Inspectoren...

Og så har de en masse rare featuers man kan sætte. F.eks. popups nede ved siden af uret--- Samt en masse andet...



helt enig! :)



det ser godt nok imponerende ud;
jeg har rettet de fejl jeg selv kan finde ud af at rette men det kniver lidt med de her

procedure TTray.RaiseEvent(aMouse : TTIMouse; aMousePos : TPoint);
begin
if Assigned(FOnClick) then //her brokker den sig
begin
try
FOnClick(Self, aMouse, aMousePos);
except
end;
end;
end;

Min compiler svarer : Undeclared indentifier 'FOnClick'

function TTray.IsIconMessage(aMessage : TMessage) : Boolean;
var
L : TPoint;
begin
GetCursorPos(L); // hent musens position.
Result := (aMessage.Msg = WM_TRAY_NOTIFY); // se om det er en besked til os.
if (Result) then
begin // der er det, så analyser beskeden og rejs det tilsvarende event.
case Msg.Command of //her brokker den sig
WM_RButtonDown:
RaiseEvent(msRightClick, L);
WM_RButtonDblClk:
RaiseEvent(msRightDoubleClick, L);
WM_LButtonDown:
RaiseEvent(msLeftClick, L);
WM_LButtonDblClk:
RaiseEvent(msLeftDoubleClick, L);
else
Result := False;
end;
end;
end;

her svarer min compiler : Undeclared indentifier 'Msg' ,'or' ':' expected but 'OF' found

håber du vil hjælpe lidt yderligere




<< < 12 > >>
t