Form->Icon gleich TrayIcon->Icon will nicht klappen



  • Hallo, da bin ich mal wieder.
    ..und das mit einer peinlich simplen Frage, aber kriegs nicht gegoogelt und hab auch schon sämtliche Möglichkeiten rumprobiert:

    Zu meinem Programm gibts nen TrayIcon. Während der Laufzeit ändere ich des öfteren mal das Icon des Programms (bzw will eigentlich nur das Icon des TrayIcons verändern).

    mit

    Form1->Icon->LoadFromFile(...);
    

    wird jedoch lediglich in Form1 oben in der Leiste das Icon geändert, und mit

    TrayIcon1->Icon->LoadFromFile(...);
    

    passiert überhaupt nichts. Dachte erst ich muss das TrayIcon neu zeichnen, aber Repaint() gibts nicht und Refresh() tuts nicht. Habt ihr einen Tipp?



  • Hallo,

    wenn ich mich richtig erinnere, dann musst du das Icon erst in ein TImageList-Objekt laden und dann über TrayIcon->ImageIndex aufrufen...



  • Hi,
    nach ein wenig rumprobieren mit TImageList hab ichs geschafft:

    TrayIcon1->Icons = ImageList1;
    TrayIcon1->IconIndex = 0; //(oder TrayIcon1->IconIndex = 1;)
    

    Wäre ich jetzt aber nie selbst drauf gekommen 🙄
    Vielen Dank! 😉



  • Hallo,

    ich muss meinen Thread von letztens noch einmal auskramen!
    Ich habe einen Timer laufen, der das Icon jede Sekunde anhand von Bedingungen überprüfen und gegebenfalls ändern soll.

    Mit TrayIcon1->IconIndex = 0; (oder 1, 2, ..) kann ich das Icon zwar super ändern, aber wenn ich dann das aktuelle Icon mit ShowMessage(TrayIcon1->IconIndex); herausfinden will, spuckt er immer 0 aus, ganz gleich, welches Icon gerade aktiv ist!

    Ich dachte nämlich es wäre sauberer, wenn ich statt

    if(MeineBedingung == true)
        TrayIcon1->IconIndex = 1;
    

    das hier schreibe:

    if(MeineBedingung == true)
    {
      if(TrayIcon1->IconIndex != 1)
        TrayIcon1->IconIndex = 1;
    }
    

    da ich das, wie gesagt, nämlich jede Sekunde mache. Wär super, wenn jemand Rat weiß.



  • Hallo,

    was ist besser daran pro Sekunden zwei, anstelle von einer Abfrage zu machen? Das Bild wird soweit ich weiß nicht neugeladen wenn es bereits den Index besitzt den du angibst.

    VlG



  • RandomAccess85 schrieb:

    Das Bild wird soweit ich weiß nicht neugeladen wenn es bereits den Index besitzt den du angibst.

    Wenn das wirklich so ist, hast du natürlich recht. Ich dachte jedoch, dass immer alles neu geladen wird, wenn mans einfach blöde neu setzt.


Anmelden zum Antworten