TToolBar: Welches Image-Format?

Rund um die LCL und andere Komponenten
Antworten
Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

TToolBar: Welches Image-Format?

Beitrag von Timm Thaler »

Ich habe mit dem Formulareditor ein Fenster mit Menubar und Toolbar erstellt. Dem Fenster eine ImageList zugewiesen, in dieser einige 16x16 Icons im PNG-Format. Die Icons direkt als Datei einigen Menupunkten zugewiesen, und aus der ImageList den Toolbar-Buttons. Im Formulareditor werden die Icons sowohl in den Menus als auch auf der Toolbar angezeigt.

Starte ich das Programm - in dem selbst noch nichts passiert - werden die Menus mit Icons angezeigt, die Toolbar aber ohne. Ich sehe nur die leeren Toolbar-Buttons.

Ich nehme an, die Icons für die Toolbar müssen ein spezielles Format haben, damit sie angezeigt werden. Nur finde ich keine Info darüber, welches. Aktuell sind es PNGs mit 16x16 Pixeln, 32bit, Hintergrund transparent.

Windows 7, Lazarus 1.9, FPC 3.1.1

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

Re: TToolBar: Welches Image-Format?

Beitrag von wp_xyz »

Die Bitmap-Eigenscahft der einzelnen Menü-Items würde ich unangetastet lassen. Stattdessen würde ich dem Menü eine ImageListe zuweisen (Property Images), in der die einzelnen Bilder gespeichert sind. Jeder MenuItem erhält dann das betreffende Bild über den ImageIndex. Genauso bei der Toolbar: Weise dieselbe ImageListe auch der Eigenschaft Images der ToolbarBar zu und gib jedem Toolbutton den entsprechenden ImageIndex. Das spart die doppelte Speicherung der Bilder für Menü und Toolbuttons.

PNG-Format ist in Ordnung. Alle in ImageList gesammtelten Bilder müssen dieselbe Größe haben, sonst werden sie auf die in ImageList.Width und .Height angegebene Größe zuerschnitten bzw. bei Laz 2.0 heruntergerechnet.

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: TToolBar: Welches Image-Format?

Beitrag von Timm Thaler »

wp_xyz hat geschrieben:Genauso bei der Toolbar: Weise dieselbe ImageListe auch der Eigenschaft Images der ToolbarBar zu und gib jedem Toolbutton den entsprechenden ImageIndex.


Hab ich gemacht, aber die ToolButtons bleiben leer.

Nach dem Neustart von Lazarus und Neuladen des Projektes sind auch die ToolButtons im Editor leer, der ImageIndex ist wieder auf -1. Ich kann aber einen höheren ImageIndex zuweisen und dann erscheint mein Icon wieder auf dem ToolButton. Aber nur im Editor, nicht im ausgeführten Programm.

Kann es sein, dass das mit dem Überarbeiten von ImageList in der Version 1.9 zu tun hat? Ist da eventuell noch ein Bug?

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

Re: TToolBar: Welches Image-Format?

Beitrag von wp_xyz »

Es kann natürlich sein, dass die neue ImageList irgendwann einmal Probleme hatte, aber dass du ausgerechnet während dieser paar Tage deine Version gezogen hast, kann ich mir nicht vorstellen. Das beigefügte Demo funktioniert bei mir einwandfrei (Laz trunk / fpc3.0.4, Laz trunk / fpc trunk, Laz 1.8.4 / fpc3.0.4, Laz 2.0RC2 / fpc 3.0.4). Probier's aus.
Dateianhänge
menu_toolbar_imagelist.zip
(6.44 KiB) 91-mal heruntergeladen

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: TToolBar: Welches Image-Format?

Beitrag von Timm Thaler »

Witzig, ich hab jetzt die direkten Images in den Menus rausgeschmissen und greife auch dort auf die ImageList zu - und damit werden die Icons sowohl in den Menus als auch in den ToolButtons angezeigt.

Warum ist das so? Was mache ich, wenn ich ein Programm nur mit Toolbar, ohne Menus habe?

Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: TToolBar: Welches Image-Format?

Beitrag von Ally »

Hallo Timm Thaler,

in so einem Fall bietet es sich an eine ActionList zu verwenden.
Ihr kannst du eine ImageList zuweisen, die die Icons aller Menüpunkte enthält (seit 1.9/2.0 auch in allen benötigten Auflösungen).

ImageList.jpg

Den Menüpunkten, Popuomenüs oder Toolbuttens musst du dann nur noch die entsprechende Action zuordnen.
Alle Eigenschaften, wie z.B. Caption, Hint oder ImageIndex stehen dann auch dort zur Verfügung (und natürlich der Code der ausgeführt werden soll).

Gruß Roland

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

Re: TToolBar: Welches Image-Format?

Beitrag von wp_xyz »

Timm Thaler hat geschrieben:Witzig, ich hab jetzt die direkten Images in den Menus rausgeschmissen und greife auch dort auf die ImageList zu - und damit werden die Icons sowohl in den Menus als auch in den ToolButtons angezeigt.

Warum ist das so?

Keine Ahnung, wahrscheinlich ein Bug, den niemand bemerkt hat, weil du der erste bist, der so mit Menüs arbeitet.

Timm Thaler hat geschrieben:Was mache ich, wenn ich ein Programm nur mit Toolbar, ohne Menus habe?

Versteh ich nicht. Hast du meinen Beitrag nicht gelesen? Klicke eine ImageList aufs Formular, fülle sie mit den Bildern und weise sie der Toolbar zu. Es ist egal, ob es ein Menü gibt oder nicht.

Antworten