Hey
Po uruchomieniu mam sobie ikone w Tray'u (wykozystuje tutaj komponent CoolTrayIcon), jak zrobic cos takiego aby po jakims warunku ikona zmienila sie na inna ?
np If i:=0 then zmien ikone
Może musi być tak?
d\:2.ico
[???]
albo ikonka jest jakaś nieprawidłowa?
dla pewności można ją przekonwerterować jeszcze raz na .ico
[np. programem Irfan View.]
P.S.Też mam Windows 2000 i podobne sztuczki u mnie chodzą...
(ale używam RxTrayIcon-przy okazji polecam.Ten komponent czasem może okazać się lepszy w takiej sytuacji...)
If i:=0 then zmien ikone</quote>
po pierwsze taka pętla nie będzie działać...bo powinno być if i=0 then dalej;, a po drugie widze że popełniasz dużo błędów, skoro używasz CoolTrayIcon to tam jest opcja że możesz dodać ikony z ImageList, więc co Cię powstrzymuje, ładujesz ikony do ImageList i później jak będziesz chciał wykorzystać któraś z nich to: Cooltrayicon1.IconIndex:=1; i teraz będzie działać!!!
nielepiej do zasobów dać np ICO1 ICO2 ICO3 ICO4 ... ICO10 i w pętli pobierać handle funckcją loadicon? for i:=1 to 10 do cooltrayicon1.icon:=loadicon(hinstance,pchar('ICO'+inttostr(i))); niewiem czy loadicon ma pchar na końcu..
a nie mozna prosciej?
Do ImageList dodajesz ikony a nastepnie:
ImageList1.GetIcon(0{tu numer ikony}, CoolTrayIcon1.Icon);
Ja tak robie i to działa...
TheChoseN nie jest to prosciej poniewaz dodatkowo nieporzebnie obciąza aplikacje (oczywiesice w minimalnym stopniu ale zawsze trzeba robić jak najlepiej :) )
co do tematu wystarczy ZAPEWNE kod:
iconVisible := false; // czy tak tam jest, jak jest enabled, czy show
cooltrayicon1.icon.loadfromfile('d:\2.ico')
iconvisible := true
i bankowo bydzie dzialac :)
Jakoś nigdy nie musiałem używać CollTrayIcon, bo do tego celu wystarczał mi stary komponent TrayIcon,
który działał jeszcze pod Delphi 3, a może nawet wcześniej. Ale jak podejrzewam - we wszystkich takich
komponentach Ikonka będzie typu TIcon, więc można ją załadować na przykład w taki sposób. Plik *.tc:
zzz_ikona1 ICON "czerwona.ico"
Fragment programu napisanego jeszcze pod Delphi 3, który pinguje podany adres IP lub hosta i w razie
gdy ten nie odpowiada wyświetla ikonkę czerwoną, jeżeli działa - zieloną, a gdy IP jest nieprawidłowe - żółta.
procedure TMainForm.WczytajCzerwonaIkone;
var
Ikonka: TIcon;
ResName: PChar;
begin
KtoraIkonka := 1;
ResName := 'zzz_ikona1';
Ikonka := TIcon.Create;
Ikonka.Handle := LoadIcon(HINSTANCE, ResName);
TrayIcon.ToolTip := 'Adres do pingowania nie odpowiada!';
TrayIcon.Icon := Ikonka;
Ikonka.Free;
end;
Nazwa zasoby dlatego jest w takim stylu, bo zauważyłem, że jeżeli do zasobów w Delphi dodamy ikonę o nazwie
zasobuy na przykład Ikonka1, to jest ona alfabetycznie przed standardową ikoną o nazwie zasoby MainIcon, no i
wtedy taka ikonka wyświetla się w widoku Ekspolratora czy jakiegoś managera plików jako ta domyślna właśnie ;/
// heeej! ten temat jest sprzed 6 lat! - Ktos