Hallo,
ImageListHelper ist ein kleine Zusatzkomponente, die
- 4 Imagelisten (Large=32x32 und Normal=16x16 und dazu jeweils noch die disabled-Images) besser verwaltet
- Daher insbesondere für die Verwendung von Ribbons gedacht ist
- Übersichtliche Darstellung aller 4 Listen gleichzeitig ermöglicht
- Zentrales Verschieben, Erstellen und Löschen in allen Listen ermöglicht
- Kombination von Images, um Neue zu erstellen (z.B. Dokument-Save-Image) erlaubt
- Eine Erweiterte Suche bietet
Das Hinzufügen von neuen Bildern stellt sich mehr oder weniger intelligent an und versucht die restlichen 3 Images in der Ordnerstruktur automatisch zu finden. Es reicht also, ein 32x32-NormalImage in seiner Icon-lib auszuwählen, die Kompo versucht, alle anderen 3 automatisch zu finden. Falls das nicht gelingt, können die fehlenden Images einfach manuell nachgeladen, verkleinert/vergrößert oder in Graustufen gewandelt werden.
Es ist außerdem eine erweiterte Suche integriert, um Bilder anhand vom Namen (z.B. alle mit „add“ im Namen) zu finden. Außerdem können hier Suffixe ausgeblendet werden, um nur das „normale“ image zur Auswahl anzuzeigen und nicht noch die anderen beiden (disabled, highlight).
Prinzipiell können auch andere Größen als Original-bitmap geladen werden und dann auf 32x32 verkleinert/vergrößert werden.
Probieren kann man es gut mit den freien GlyFX-Icons, bzw denen, die mit Delphi mitkommen (zu finden im „image“-Ordner von Delphi). Es sind auch die Images die auf den Screenshots zu sehen sind.
Das man mit den vielen Images in den Listen mal ganz schnell den Überblick verlieren kann, zeigt das bei XE2- mitgelieferte RibbonDemo ja auch selber. Hier fehlt in der imagelist "ilGFX16_d" das Ausschneiden-Symbol. Sieht dann in der Ribbongroup "Clipboard" etwas unschön aus, wenn die Symbole ihren enabled-Status ändern.
Entwickelt unter Delphi-XE2, für andere Versionen kann ich nicht sprechen.
Diese Version ist als Alpha gedacht um konzeptionell zu zeigen, was machbar wäre. Desweiteren um sich ein paar Anregungen zu holen oder obs der größte Blödsinn ist .
Benutzung auf eigene Gefahr .
Anregungen, Fehler etc. werden gern angenommen.
Vorraussetzungen:
Icons müssen sich in einer Ordnerstruktur befinden, damit das automatische Finden der anderen Images funktioniert:
- irgendein verzeichnis\32x32\...
- irgendein verzeichnis\16x16\...
es ist auch möglich, daß sich die Icons dann nochmal in einem Unterordner befinden. Es kann allerdings (noch) nicht zwischen einem "Normal" und "Disabled"-Unterordner unterscheiden.
Unterstütze Bildformate sind bmp und png.
Es müssen nicht alle 4 Imagelisten zugewiesen werden. Basis für viele Aktionen (Verschieben, Ersetzen, ...) ist aber immer die normale, 16x16-Imagelist.
Benutzung:
Package installieren, Kompo mit auf die Form packen und die Imagelisten zuweisen. Anschließend die ImageListHelper-Kompo doppeltklicken oder per Komponentenmenu anpassen.
Beim Bearbeiten der Kompo werden ein paar kleine Dinge wie die colordepth und die Anzahl der ImageList-Einträge geprüft. Haben die Imagelisten unterschiedliche Anzahl von Einträgen, können diese mit "Imagelist" erweitern auf die gleiche Anzahl gebracht werden.
Einfach mal das mitgelieferte Demo (liegt bereits als Exe im
Win32/Release bei) oder die Kompo mit dem Delphi-Ribbondemo ausprobieren. Für ein schnelles Probieren des Demos bitte hierzu ein paar Images „16x16“ und „32x32“ in den Unterordner „Images“ kopieren z.B. eben die o.g. GlyFX-Icons.
Es wird nirgends etwas gespeichert. Alle Eintellungen sind derzeit noch direkt in der Kompo hinterlegt.
zu Beachten: - geprüft werden die Imagelisten auf colordepth=cd32bit (ohne diese Einstellungen hat man eh keine transparenten PNG´s in der Liste)
- Bitte aber darauf achten, daß Ändern dieses Wertes zu aller Erst dazu führen, daß der Imagelisteninhalt komplett gelöscht wird . Dabei gibts seitens Delphi auch keine Rückfrage.
- es gibt kein Undo oder Abbrechen. Die Imagelisten werden nicht kopiert, was geändert wird, wird sofort geändert
Eigenschaften:
LargeImages: TCustomImageList;
LargeDisabledImages: TCustomImageList;
DisabledImages: TCustomImageList;
Images: TCustomImageList;
die 4 Imagelisten, Analog des dazugehörigen Actionmanagers.
ImageIndexNames:TStrings
Stringliste mit den dazugehörigen Bezeichnungen. Dient der besseren Übersicht, außerdem kann ein const-Quelltext generiert werden, um den Imageindex per diesem Namen im Quelltext anzusprechen.
Options:
DisabledSuffix:string
Standardwert ist "_d": daran werden im Dateinamen die als "disabled" dargestellten Icons erkannt
Directory_CombineImages:TIHDirectoryName (string)
Verzeichnis, wo sich Images für eine Kombination befinden. Hier wird eine Unterordnerebene zur besseren Gruppierung(z.B. Standard, rote Pfeile, grüne Pfeile, ..., Sonstiges) unterstützt.
Directory_Images:TIHDirectoryName(string)
StandardVerzeichnis, wo sich die Image-Bibliothek befindet. Sollte gleich auf den Ordner 32x32 oder 16x16 verweisen.
ExludeSuffixeFromSearch:Tstrings
wird für die erweiterte Suche benötigt. hier können Suffixe, wie z.B. "_disabled" oder "_highlight" angegeben werden, die bei der erweiterten Suche dann nicht angezeigt werden. Das macht die Suche damit übersichtlicher, da jedes Image nur in der normalen Variante angezeigt wird und nicht 3 fach (normal, disabled und highlight)
Lightness_DisabledImage:integer
Vorgabewert für die Helligkeitsanpassung bei der manuellen Umwandlung der Disabled-Images in ein Graustufenbild. Diese können aufgehellt oder abgedunkelt werden.
SizeOfCombiImage_inPercent:integer
Vorgabewert für die Größe der Kombinationsimages im Verhältnis zum Originalbild. Egal, in welcher Größe das Originalbild und Kombinationsbild vorliegen, das Kombinationsbild wird entsprechend skaliert.
Todo:
- das Vergrößeren ist eh nur dafür gedacht, daß die Imagelisten die gleiche Anzahl haben und keine leeren Images hat. Bei einer Vergrößerung eines 16x16-Images auf 32x32 werden sicher keine gescheiten Ergebnisse rauskommen, egal welcher Filter .
- evlt nicht die einzelnen Imagelisten als Property, sondern gleich den Actionmanager und die Imagelisten von dort ziehen.
- Graustufen: evtl nicht nur Helligkeit ändern, sondern auch Kontrast um die erzeugten Images besser an bereits bestehende Images anzupassen
- Kombinieren: Basis ist immer das normale Image. Von dort werden die anderen 3 ermittelt und in Graustufen gewandelt bzw skaliert. Evtl ist es aber besser, die anderen 3 Orig-Bilder zu suchen und mit diesen kombinieren, würde für ein einheitlicheres Erscheinungsbild sorgen
- Bitmap als PNG abspeichern klären (Transparenz-probleme), generell macht mir die Verwendung der Png´s an der ein oder anderen Stelle noch Probleme.
Gruß Frank