AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte ImageListHelper V0.1-alpha - Konzeptstudie

ImageListHelper V0.1-alpha - Konzeptstudie

Ein Thema von Keldorn · begonnen am 6. Jan 2013 · letzter Beitrag vom 7. Jan 2013
Antwort Antwort
Keldorn
Registriert seit: 6. Mär 2003
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
Miniaturansicht angehängter Grafiken
uebersicht.jpg   erweiterte-suche.jpg   test.jpg   einzelnes-bild-bearbeiten.jpg  
Angehängte Dateien
Dateityp: zip ImageListHelper.zip (1,52 MB, 26x aufgerufen)

Lükes Grundlage der Programmierung:
Es wird nicht funktionieren
(Murphy)

Geändert von Keldorn ( 7. Jan 2013 um 16:37 Uhr)
 
Benutzerbild von uligerhardt
uligerhardt

 
Delphi 2007 Professional
 
#2
  Alt 6. Jan 2013, 12:37
Hallo, Frank!

Das klingt sehr interessant! Ich probiere gerade das erste mal ernsthaft mit Ribbons herum (DevEx in meinem Fall) und eine saubere Lösung für die Images hab ich immer vor mir hergeschoben.

Leider kann ich deine Kompo momentan nicht "live" ausprobieren, aber was mir beim Durchlesen aufgefallen ist:
  • Das Kombinieren funktioniert mit einem 32er-Image als Basis und einem 16er als Overlay. Es entsteht also eine "gute" 32er-Kombi. Wie schaut dann die 16er-Kombi aus?
  • Bei vielen Iconsets gibt es außer Normal und Disabled auch noch Hot. Vielleicht kannst du das mit integrieren.
Uli Gerhardt
  Mit Zitat antworten Zitat
Keldorn

 
Delphi 10.1 Berlin Professional
 
#3
  Alt 6. Jan 2013, 13:23
Hallo Uli,

Danke fürs Anschauen .

Zitat:
Leider kann ich deine Kompo momentan nicht "live" ausprobieren
Du kannst auch die Exe probieren, dort läßt sich der Kompoeditor direkt in der exe zum Ausprobieren aufrufen.
Installieren mußt du da nix, bloß ein paar icons zum Testen kopieren.

Zitat:
Das Kombinieren funktioniert mit einem 32er-Image als Basis und einem 16er als Overlay. Es entsteht also eine "gute" 32er-Kombi. Wie schaut dann die 16er-Kombi aus?
Du erstellst die 32-Kombi, von dort wird das disabled-Image als Graustufenbild erstellt. Die 16er Varianten werden von den beiden 32er Images verkleinert. Fürs Verkleinern kannst Du 3 verschiedene Resampling-methoden wählen (Pixelwiederholung, Lineare und bikubische Interpolation), kommt stark auf das Ausgangsbild drauf an, welcher Resamplingtyp besser geeignet ist.
Ein Beispiel siehst du auch im screenshot (einzelnes Bild bearbeiten).

Die evtl vorhanden Images (32 disabled, 16 normal und 16 disabled) werden dabei noch ignoriert. Überleg ich mir aber noch, doch lieber diese zu suchen und das Kombinationsimage dort drauf zu malen. Es ist sonst wahrscheinlich zu schwer, ein einheitliches Erscheinungsbild zu erhalten, da z.B. die disabled-Images sicher auch vom Kontrast verändert wurden. Ich erlaube nur die Helligkeitsänderung, das reicht wahrscheinlich nicht.

Zitat:
Bei vielen Iconsets gibt es außer Normal und Disabled auch noch Hot. Vielleicht kannst du das mit integrieren.
ja kann ich. Die Delphi-eigene Ribbonvariante/Actionmanager unterstützt aber keine Hotimages, deswegen habe ich das noch nicht vorgesehen. Die Dev-express-variante kenne ich leider nicht.

Gruß Frank
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

 
Delphi 2007 Professional
 
#4
  Alt 6. Jan 2013, 17:41
ja kann ich. Die Delphi-eigene Ribbonvariante/Actionmanager unterstützt aber keine Hotimages, deswegen habe ich das noch nicht vorgesehen. Die Dev-express-variante kenne ich leider nicht.
Hab grad nochmal nachgeschaut - die DX-Ribbons haben auch HotImages.
Uli Gerhardt
  Mit Zitat antworten Zitat
Keldorn

 
Delphi 10.1 Berlin Professional
 
#5
  Alt 7. Jan 2013, 16:41
Hallo,

habe die HotImages eingebaut. Geht aber nur die automatische Suche der Dateien, die Kombination wird ignoriert. Hier muß ich erstmal 3x drüber schlafen , wie ich das am sinnvollsten mache.

Changelog:
V0.1.1
* Erweiterung Hotimages (nur Auswahl, keine Kombination möglich)
- Fehler beim Grafikladen korrigert (eine bmp wurde nicht korrekt geladen, wenn vorher eine png geladen wurde)

.zip wurde im 1. Beitrag angepaßt, Screenshots sind noch auf altem Stand.

@Uli: welche Iconlib nutzt du?

Gruß Frank
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

 
Delphi 2007 Professional
 
#6
  Alt 7. Jan 2013, 16:50
@Uli: welche Iconlib nutzt du?
Ich suche noch. Die, die mir gefallen, haben meistens keine 32x32-Bilder. Und sie sollten nicht zu professionell sein, damit ich ggfs. fehlende Bilder ohne 3D-AlphaBlending-Photoshop-Orgien selber ergänzen kann - das kann ich nämlich nicht. Kostenlos wäre natürlich auch gut.
Uli Gerhardt
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2019 by Daniel R. Wolf