Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Farbtiefe bei Tray-Icon anpassen (https://www.delphipraxis.net/75527-farbtiefe-bei-tray-icon-anpassen.html)

c.wuensch 21. Aug 2006 00:17


Farbtiefe bei Tray-Icon anpassen
 
Hallo,

meine Anwendung soll ein Tray-Icon anzeigen. Dazu gibt es ja schon unzählige Beiträge. Was ich allerdings nirgendwo finden konnte ist folgendes:

Unter Windows XP werden Tray-Icons meist mit 256 Farben (oder sogar 24 bit?) dargestellt, unter anderen Windows-Versionen (z.B. Win2k) nur mit 16 Farben.

Wie kriege ich es jetzt hin, dass je nach eingestellter Symbol-Farbtiefe des Systems ein jeweils darauf optimiertes Icon angezeigt wird?
(Es sollte nicht die Windows-Version als Kriterium benutzt werden, da man es in manchen Versionen umstellen kann...)

Cu, Chris

Meflin 21. Aug 2006 00:21

Re: Farbtiefe bei Tray-Icon anpassen
 
Wenn ich mich recht entsinne kann man ja in einer *.ico Datei mehrere Versionen seines Icons abspeichern, z.B. 32x32-128x128px in einer Datei. Wenn du also die verschiedenen Farbtiefen in einer Datei zusammenfasst, könnte ich mir vorstellen dass sich das OS das passende raussucht, wie es das bei der Größe auch tut. Das ist aber nur eine Vermutung und müsste experimentell nachgewiesen werden :mrgreen:


_frank_ 21. Aug 2006 00:28

Re: Farbtiefe bei Tray-Icon anpassen
 
wenn der tip von Meflin nicht funktionieren sollte, funktioniert evtl. das:

in der registry unter
HKEY_CURRENT_USER \ Control Panel \ Desktop \WindowMetrics
den Wert für "Shell Icon BPP" auslesen (weis nicht, ob das auch für Tray-Icons gilt)
und je nach Wert (8/16/24) das passende Trayicon zuzuweisen
HTH Frank

c.wuensch 21. Aug 2006 18:37

Re: Farbtiefe bei Tray-Icon anpassen
 
Hallo,

danke für eure Mühe!

Der Tipp von Meflin ist nicht schlecht (diese Idee hatte ich auch schon). Bisher habe ich das Icon aber aus einer ImageList genommen, und diese unterstützt nun mal nur ein Bild und nicht mehrere.

Das Problem besteht jetzt also darin, dass ich nicht weiß, wie ich das Handle einer ganzen Icon-Datei (d.h. eigentlich soll es dann eine Resource sein) bekomme, um dieses im Tray darzustellen.

Kann mir da vielleicht einer helfen?

Cu, Chris

c.wuensch 21. Aug 2006 21:59

Re: Farbtiefe bei Tray-Icon anpassen
 
@_frank_:
Ich habe deinen Tipp natürlich auch probiert (auf mehreren Rechnern).
Der genannte Registry-Wert gibt allerdings nur die Symbol-Farbtiefe des Systems an, die sich von der des Trays unterscheiden kann (Beispiel: Windows 2000, hier hat das Tray immer nur 16 Farben).

Nach langem Googeln habe ich festgestellt, dass es wohl tatsächlich ein größeres Problem ist, ein Icon bestehend aus mehreren "Bildchen" zu laden, da die TIcon-Komponente wohl nur ein Bild laden kann.

Hat vielleicht irgendjemand eine Idee, wie dies dennoch zu bewerkstelligen wäre?

Cu, Chris

Meflin 21. Aug 2006 22:01

Re: Farbtiefe bei Tray-Icon anpassen
 
Zitat:

Der genannte Registry-Wert gibt allerdings nur die Symbol-Farbtiefe des Systems an
Ist das dann nicht eine relativ einfache Lösung? Du lieferst die verschiedenen Farbtiefe-Varianten als einzelne Dateien mit. Über den Registry-Wert kannst du auslesen, welche Farbtiefe verwendet wird, und das entsprechende Icon einbinden :)


c.wuensch 21. Aug 2006 22:42

Re: Farbtiefe bei Tray-Icon anpassen
 
Eben gerade nicht!!!

Wie ich schon schrieb:
Zitat:

die sich von der des Trays unterscheiden kann
Als Beispiel habe ich mein Windows 2000 System angeführt. Die Symbol-Farbtiefe kann ich hier auf 16, 24 oder 32 bit stellen (was sich auch auf diesen Registry-Schlüssel auswirkt) aber die Tray-Icons haben trotz allem IMMER 8 bit (also 16 Farben).

Unter Windows XP stimmt die Tray-Farbtiefe mit dem Schlüssel überein, unter Windows 9x kann ich es gerade nicht testen.

Meflin 21. Aug 2006 22:55

Re: Farbtiefe bei Tray-Icon anpassen
 
Zitat:

Zitat von c.wuensch
die sich von der des Trays unterscheiden kann

:wall: hab ich irgendwie überlesen :roll:

Allerdings verstehe ich nun nicht ganz wieso du das Icon in eine TIcon-Komponente laden musst :stupid: um dir un weiterzuhelfen wäre es wohl hilfreich zu wissen wie du deine Anwendung überhaupt in den Tray bringst! Wenn du z.B. eine Komponente wie TTrayIcon verwendest musst du doch die *.ico-Datei ienfach nur zuweisen, egal wie viele Versionen die letztlich beinhaltet!


c.wuensch 21. Aug 2006 23:54

Re: Farbtiefe bei Tray-Icon anpassen
 
Im Prinzip ist es mir egal, auf welche Weise das Icon erzeugt wird, wenn es funktioniert und mit entsprechender Farbtiefe angezeigt wird :).

Eigentlich wollte ich es direkt per API-Befehl erzeugen, und zwar nach folgendem Tutorial:
http://delphi.about.com/od/kbwinshell/l/aa121801a.htm

Eine Komponente wäre mir aber ebenso recht. Ich habe jetzt mal eben die TTrayIcon VCL. Version 1.3 von Pete Ness probiert. Aber dort wird das Icon (wie vermutlich in anderen Komponenten auch) über ein Image geladen ==> also ist nur ein Bildchen verfügbar.

Ich hoffe ja immernoch, dass irgendjemand mir da weiterhelfen kann... (bei anderen Programmen klappt es ja schließlich auch!)

Cu, Chris

Daniel G 22. Aug 2006 00:10

Re: Farbtiefe bei Tray-Icon anpassen
 
Zitat:

Zitat von c.wuensch
wie ich das Handle einer ganzen Icon-Datei (d.h. eigentlich soll es dann eine Resource sein) bekomme

Evtl. über MSDN-Library durchsuchenLoadIcon? :stupid:

meflin's Überlegung vom Anfang mit den mehreren Bit - Versionen war schon ganz richtig, so würde ich es auch machen. Dann würde ich das Beispiel mit dem direkten API nehmen und das Handle zu hIcon einfach über LoadIcon bekommen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:14 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