Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi TrayIcon zur Laufzeit aktualisieren (https://www.delphipraxis.net/83516-trayicon-zur-laufzeit-aktualisieren.html)

hugo1990 3. Jan 2007 23:32


TrayIcon zur Laufzeit aktualisieren
 
Gibt es eine Möglichkeit, das TrayIcon der eigenen Anwendung zur Laufzeit zu aktualiesieren? Ich möchte nämlich eine Analoge-Uhr dort hinzeichnen, bei der sich die Zeiger Bewegen.

Luckie 3. Jan 2007 23:36

Re: TrayIcon zur Laufzeit aktualisieren
 
Kommt drauf an. Wie bekommst du denn dein TrayIcon in die TNA?

Reinhard Kern 4. Jan 2007 00:58

Re: TrayIcon zur Laufzeit aktualisieren
 
Zitat:

Zitat von hugo1990
Gibt es eine Möglichkeit, das TrayIcon der eigenen Anwendung zur Laufzeit zu aktualiesieren? Ich möchte nämlich eine Analoge-Uhr dort hinzeichnen, bei der sich die Zeiger Bewegen.

Hallo,

du kannst mit Shell_NotifyIcon jederzeit das Icon ändern (dazu brauchst du ein Icon-Handle, z.B von LoadIcon). Allerdings brauchst du für eine Uhr sehr viele Icons.

Gruss Reinhard

Luckie 4. Jan 2007 01:00

Re: TrayIcon zur Laufzeit aktualisieren
 
Zitat:

Zitat von Reinhard Kern
Allerdings brauchst du für eine Uhr sehr viele Icons.

Wieso? Er kann doch auf den Canvas vom Icon seine Zeiger zeichnen.

hugo1990 4. Jan 2007 12:19

Re: TrayIcon zur Laufzeit aktualisieren
 
Na das war ja einfach, eigentlich zu einfach, da hätte ich selber drauf kommen müssen. Einfach Shell_NotifyIcon(NIM_MODIFY,...).

woggly4 13. Jan 2007 11:36

Re: TrayIcon zur Laufzeit aktualisieren
 
Zitat:

Zitat von hugo1990
Na das war ja einfach, eigentlich zu einfach, da hätte ich selber drauf kommen müssen. Einfach Shell_NotifyIcon(NIM_MODIFY,...).

das ganze habe ich ausprobiert aber es funktioniert nicht. ich bekomme die neuen icens über
Delphi-Quellcode:
ImageList1.GetIcon(2,Application.Icon);
. Liegt das vielleicht dadran, das es nicht funktioniert?

Reinhard Kern 15. Jan 2007 01:16

Re: TrayIcon zur Laufzeit aktualisieren
 
Zitat:

Zitat von woggly4
Zitat:

Zitat von hugo1990
Na das war ja einfach, eigentlich zu einfach, da hätte ich selber drauf kommen müssen. Einfach Shell_NotifyIcon(NIM_MODIFY,...).

das ganze habe ich ausprobiert aber es funktioniert nicht. ich bekomme die neuen icens über
Delphi-Quellcode:
ImageList1.GetIcon(2,Application.Icon);
. Liegt das vielleicht dadran, das es nicht funktioniert?

Hallo,
GetIcon liefert ein TIcon, also ein Delphi-Objekt. Shell_NotifyIcon ist aber eine Win32-API-Funktion und kann damit nichts anfangen, sondern erwartet ein Icon-Handle (HIcon). Das müsste normalerweise TIcon.Handle sein, hab ich aber noch nicht probiert, weil ich meine Icons gleich mit API-Funktionen lade, und die liefern ja ein Handle (z.B. LoadIcon).

Gruss Reinhard

woggly4 15. Jan 2007 13:35

Re: TrayIcon zur Laufzeit aktualisieren
 
Könnte mir denn bitte jemand sagen, wie ich das hinbekomme, dass sich das Icon ändert, obwohl ich die Icons aus der Imagelist hole? Oder ist das gar nicht möglich?

Reinhard Kern 15. Jan 2007 13:57

Re: TrayIcon zur Laufzeit aktualisieren
 
Zitat:

Zitat von woggly4
Könnte mir denn bitte jemand sagen, wie ich das hinbekomme, dass sich das Icon ändert, obwohl ich die Icons aus der Imagelist hole? Oder ist das gar nicht möglich?

Hast du es denn mit Application.Icon.Handle probiert?

Gruss Reinhard

woggly4 15. Jan 2007 14:36

Re: TrayIcon zur Laufzeit aktualisieren
 
Zitat:

Zitat von Reinhard Kern
Zitat:

Zitat von woggly4
Könnte mir denn bitte jemand sagen, wie ich das hinbekomme, dass sich das Icon ändert, obwohl ich die Icons aus der Imagelist hole? Oder ist das gar nicht möglich?

Hast du es denn mit Application.Icon.Handle probiert?

Gruss Reinhard

Ja, ich habe das als Timer laufen. Sodass alle 15 Sekunden das Icon überprüft wird und geändert wird (jedenfalls SOLL das so funktionieren) Aber ich verstehe nicht, warum das Programm mit Shell_NotifyIcon zurecht kommt, wenn ich das Programm in den Systray packe. Das Symbol verändert sich auch, wenn ich das Programm hervorrufe und dann wieder in Tray packe... Ich möchte nur diesen Schritt übergehen. Also so: a) Icon a wird angezeigt und in systray gepackt b) icon a ändert sich in b - es wird aber noch das icon a im tray angezeigt. c) programm wird aus dem tray geholt und wieder reingepackt d) icon b ist nun auch im systray zu erkennen... Ich möchte halt nur Schritt c auslassen!


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:04 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz