TImagelist ab Laz 3.99

Für Fragen rund um die Ide und zum Debugger
Antworten
charlytango
Beiträge: 1086
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

TImagelist ab Laz 3.99

Beitrag von charlytango »

Nachdem ich jetzt so mehr als 40 Minuten mit Recherche und Ausprobieren verbracht habe wende ich mich an euch -- vielleicht kann mir Deppen jemand erklären wie man diesen TImageListEditor bedient.

Hier wird einiges erklärt und aufgezählt.https://www.lazarusforum.de/

Code: Alles auswählen

https://wiki.lazarus.freepascal.org/TImageList
Der neue Editor ab Laz 3.99 soll angeblich alles gleich machen, nur im neuen Design - Tja.
Ich habe auch schonmal prophylaktisch die Posts von @wp_xyz durchsucht ohne fündig zu werden :-(

Wenn man den Anweisungen für den alten Editor folgt, soll man zuerst die nötigen Auflösungen eingeben.

Also: Resolutions - Register New Resolution
Dann bekommt man ein simples Eingabefeld ohne Formatangabe oder andere Anweisung oder Hinweise.
Versuchen wir doch mal "24x24" und nach dem Drücken auf OK verschwindet die Eingabe im Nirgendwo. Ist die nun registriert? Welche Auflösungen sind überhaupt registriert? Wo kann man das abfragen? Ich würde meinen das steht irgendwo im *.LFM File, tut es nur nicht.
In meiner Naivität würde ich mir da eine checkbare Liste der gängigen Größen erwarten, verziert durch die Möglichkeit customized Größen hinzuzufügen. Dann sähe man auch gleich auf einen Blick welche Auflösungen registriert sind.
Aus meiner Sicht ist das unglücklich gelöst.

Folge ich den weiteren (alten) Anweisungen und der Liste der Funktionen (neuer Editor) findet sich:
Add image with multiple resolutions: opens a file dialog which is configured to allow selection of all images in all sizes ("resolutions") defined in the imagelist. Missing resolutions will be calculated from the existing resolution
imglisteditor1.png
imglisteditor1.png (23.88 KiB) 152 mal betrachtet
Das mag mein Editor wohl nicht. Wenn ich bei Add Image mehrere Icons auswähle, dann werden die jeweils als eigene Bilder importiert (was wohl beabsichtigt ist). Aber ich habe keinen Menüpunkt um unterschiedliche Auflösungen eines Bildmotivs zu importieren???

Und weil ich schon beim Schleimen bin: "Save" Als Bezeichnung für zwei (aus der Sicht des Editorfensters) Exportfunktionen zu verwenden, finde ich ebenso nicht gelungen.

Kann mir bitte jemand erklären wie man mit dem Teil umgeht,

THX

wp_xyz
Beiträge: 5191
Registriert: Fr 8. Apr 2011, 09:01

Re: TImagelist ab Laz 3.99

Beitrag von wp_xyz »

charlytango hat geschrieben: So 15. Jun 2025, 11:40 Also: Resolutions - Register New Resolution
Dann bekommt man ein simples Eingabefeld ohne Formatangabe oder andere Anweisung oder Hinweise.
Versuchen wir doch mal "24x24" und nach dem Drücken auf OK verschwindet die Eingabe im Nirgendwo.
Als Label steht über dem Eingabefeld "Image width of the new resolution" (ich hab's gerade nicht auf deutsch). Ist die Angabe "24x24" ein Bildbreite? Nein - du schreibst nur 24. Auch wenn deine Bilder nicht rechteckig sind, kommt hier immer die Breite hin, die Höhe ergibt sich dann automatisch, weil das Aspektverhältnis Höhe/Breite ja schon durch ImageList.Width und .Height festgelegt ist.

Ich gebe dir aber recht, dass die nicht-numerische Eingabe "24x24" nicht akzeptiert werden darf. Muss ich mal ändern...

Als Folge dieses Missverständnisse geht dann auch das Folgede schief:
Folge ich den weiteren (alten) Anweisungen und der Liste der Funktionen (neuer Editor) findet sich:
Add image with multiple resolutions: opens a file dialog which is configured to allow selection of all images in all sizes ("resolutions") defined in the imagelist. Missing resolutions will be calculated from the existing resolution

Das mag mein Editor wohl nicht. Wenn ich bei Add Image mehrere Icons auswähle, dann werden die jeweils als eigene Bilder importiert (was wohl beabsichtigt ist). Aber ich habe keinen Menüpunkt um unterschiedliche Auflösungen eines Bildmotivs zu importieren???
Wenn nur 1 Auflösung definiert ist, hast du unter "Add" den Menüpunkt "Add image..." - da kannst du mit Ctrl+Click mehrere Bilder markieren und diese jeweils als separate Icons einlesen.

Wenn mehrere Auflösungen definiert sind, heißt es unter "Add"
- "Add image(s) with single resolution" - das funktioniert wie das eben genannte: Wenn du drei Bilder im Dateiauswahl-Dialog markiert hast, werden drei Einträge im ImageListEditor gemacht; die anderen Auflösungen werden aus der eingelesenen hoch/runter-gerechnet. Wenn du zusätzlich Bilder in einer anderen registrierten Auflösung hast, kannst du diese mit "Replace" > "Replace single resolution of an image" nachladen und ersetzen.
- "Add image with multiple resolutions" - das lädt nur 1 Bild, wenn du mehrere markiert hast, werden diese als Versionen anderer Auflösung interpretiert und verwendet.
Und weil ich schon beim Schleimen bin: "Save" Als Bezeichnung für zwei (aus der Sicht des Editorfensters) Exportfunktionen zu verwenden, finde ich ebenso nicht gelungen.
Was stört dich daran? Es ist doch klar: Klickst du auf "Save" kommt ein Menü mit der Auswahl "Save image" (also das aktuell markierte Bild speichern) und "Save all" (alle Bilder speichern). Was ist daran nicht gelungen?

Benutzeravatar
theo
Beiträge: 10921
Registriert: Mo 11. Sep 2006, 19:01

Re: TImagelist ab Laz 3.99

Beitrag von theo »

Mir ist gerade aufgefallen, dass ich mit der Qt6 IDE bei "Auflösungen" -> "Neue Auflösung registrieren" einen wirklich wüsten IDE-Absturz bekomme, selbst wenn ich in dem Fenster nur auf "Abbrechen" klicke. Musste die IDE danach "killen".
Kann natürlich auch ein Bug in Qt6 sein.
Lazarus 4.99 (rev main_4_99-2078-g42756e2db2) FPC 3.2.2 x86_64-linux-qt6
TEventsCodeTool.CompleteComponent] ADDING variable ImageList1:TImageList
qt.core.qobject.connect: QObject::disconnect: No such slot QComboBox::_q_returnPressed()
qt.core.qobject.connect: QObject::disconnect: No such slot QComboBox::_q_returnPressed()
TApplication.HandleException: EAccessViolation
Access violation
Stack trace:
$00007FB5723DEA20
$00007FB57017B1CE
FreeFormEditor: FormEditor1=TFormEditor
Note: GetTextBuf is overridden for: 0��s�`x�f�x��e�
[TJITComponentList.DestroyJITComponent] ERROR destroying component Error: Access violation
Stack trace:
$0000000000000000
$00000000010D7923 SETFILTER, line 1212 of editbtn.pas
$00000000010D81AA RESETFILTER, line 1364 of editbtn.pas
$0000000000A92A7E HOOKLOOKUPROOTCHANGE, line 4670 of objectinspector.pp
$0000000000AAC8A6 SETLOOKUPROOT, line 8139 of propedits.pp
$0000000000AACA87 NOTIFICATION, line 8183 of propedits.pp
$0000000000512077
$0000000000669081 DESTROY, line 5226 of include/control.inc
$00000000006571DF DESTROY, line 6691 of include/wincontrol.inc
$000000000066B8F5 DESTROY, line 40 of include/customcontrol.inc
$0000000000484495 DESTROY, line 360 of include/scrollingwincontrol.inc
$0000000000485BA9 DESTROY, line 138 of include/customform.inc
$0000000000436F3B
$0000000000B321BB DESTROY, line 741 of ../designer/jitforms.pp
$0000000000436F3B
$0000000000436F3B
$00000000004AE013 DESTROY, line 1774 of main.pp
TCustomFormEditor.JITListException List.CurReadStreamClass=nil nil

charlytango
Beiträge: 1086
Registriert: Sa 12. Sep 2015, 12:10
OS, Lazarus, FPC: Laz stable (2.2.6, 3.x)
CPU-Target: Win 32/64, Linux64
Wohnort: Wien

Re: TImagelist ab Laz 3.99

Beitrag von charlytango »

Nun, nachdem das Problem mit meiner Leseschwäche (und einem alten Vorurteil gegenüber den Editoren einer ImageList bis D5 zurück) aus dem Weg geschafft wurde, stehe ich nicht an zu sagen dass ich gestaunt habe.

Das Teil ist ein wirklich feines Stück Software und es macht sehr viel Spass damit zu arbeiten

Danke für deinen exzellenten Beitrag.
Sollte ich dir zu nahe getreten sein, bitte ich dich um Verzeihung

wp_xyz
Beiträge: 5191
Registriert: Fr 8. Apr 2011, 09:01

Re: TImagelist ab Laz 3.99

Beitrag von wp_xyz »

Es gibt in Laz 4.0 noch mehr - ist nur noch nicht groß angekündigt, weil es noch nicht 100%-ig so fertig ist, wie ich es möchte: eine Such-Funktion für Icons, den Icon-Finder.

Installiere dir das Package "icon_finder_dsgn", es wird mit Lazarus 4.0 ausgeliefert, ist aber standardmäßig nicht installiert: Package > Install/uninstall package > "icon_finder_dsgn" in rechter Liste markieren > Install selection > Rebuild IDE. Wenn die IDE dann neu gestartet hat, findest du im ImageList-Editor unter "Add" einen neuen Eintrag "Add from Icon finder". Der öffnet die Icon-"Suchmaschine".

Standardmäßig werden alle Icons im Ordner "images/general_purpose" der Lazarus Installation angezeigt.

Alle Lazarus Bilder-Ordner enthalten eine "metadata.xml", die Schlüsselwörter zu jedem Icon enthält. Du kannst also in der Zeile "Enter keywords here" Suchbegriffe eingeben und die lange Iconliste wird entsprechend gefiltert. leider sind die Suchbegriffe derzeit noch Englisch - ein Grund, warum ich für das Tool noch nicht viel Reklame gemacht habe. Tippe z.B. "save" dann werden nur die Icons angezeigt, die irgendwas mit "Speichern" zu tun haben (zumindest solange die Meta-Daten korrekt sind). Suche dir das gewünschte aus, Doppelklick egal auf welche Größe - und es werden diejenigen Icons in deinen ImageListEditor kopiert, deren Größe dort registriert ist. wenn du wissen willst, welche Suchbegriffe es gibt, kannst du auf den "..." Button neben der Filter-Zeile klicken. Im sich öffnenden Dialog, in dem du einen Filterausdruck zusammenstellen kannst, stehen alle Suchbegriffe aufgelistet. Außerdem werden die Suchwörter angezeigt, wenn man auf ein Icon klickt. Der Suchausdruck "save and database" z.B. würde die Iconauswahl auf die Icons einschränken, die man für die Funktion von Speichern im Zusammenhang mit einer Datenbank verwenden könnte.

Neben der Größe gibt es ein weiteres Gruppierungsmerkmal, den Icon-"Stil": Icons mit mehr oder weniger komplizerten Farbverläufen werden dem Stil "classic" zugeordnet, die heute eher verwendeten homogen eingefärbten Icons sind "flat", und dann gibt es noch die Icons, die nur aus einem ein- oder zweifarbigen Umriss bestehen ("outline" bzw. "outline-twocolor"). Zum Filtern ist die Combobox rechts oben da.

In der IDE gibt es unter "Tools" > "Options" > "Icon Finder" > "General", denselben Dialog im wesentlich nochmals, nun aber, um den Bildern die Suchbegriffe und den Stil zuordnen zu können. Neue Icons im Icon-Ordner sind rot umrandet. Doppelklick darauf öffnet einen Dialog, in dem man Suchbegriffe und Stil eintragen kann. Jeder Suchbegriff in einer eigenen Zeile, bitte.

Mit dem Button "Folders" kann man die anderen Icon-Ordner von Lazarus mit dazuschalten, oder dort über "Add" einen komplett anderen Ordner mit in den Icon-Finder aufnehmen. Wenn du Icons aus anderen Bibliotheken hast und diese die Icon-Größen getrennt in verschiedenen Ordnern hat, sollten alle Icons in denselben Ordner kopiert und nur dieser im Icon-Finder eingebunden werden, sonst ist das finden alle Icon-Größen sehr unpraktisch.

Übrigens: die allermeisten Icons im Lazarus-Images-Ordner stammen von Roland Hahn (aka Forum-User Ally). Danke dafür

Antworten