TImageList : Die Einträge (Art, Eigenschaften)

Rund um die LCL und andere Komponenten
Antworten
bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

TImageList : Die Einträge (Art, Eigenschaften)

Beitrag von bembulak »

Hallo Freunde!

Hab es ja in meinem Thread über das TStringGrid schon anklingen lassen: da so gut wie alle Komponenten für mich Neuland sind, ist es auch die TImageList.

Ich habe eine ImageList erstellt und an die Toolbar (bzw. die Toolbarbuttons) gebunden. Das funktioniert auch soweit sehr gut. Was ich allerdings nicht verstehe, und es ist ganz gleich, ob ich PNGs oder ICOs nehme:
Die Bilderchen haben immer einen "Rosa" Hintergrund. Und das, obwohl die Icons Transparenz besitzen und die PNGs auch. Da ich gerade mit Windows arbeite, müssten ganz normale Icons doch funktionieren, oder liege ich falsch.
Ich kann mir auch nicht vorstellen, dass es an den Icons selber liegt, da ich dies schon (mit PureBasic) in einem anderen Programm verwendet habe. Immerhin sind es ganz normale Tango-Bilderchen (also aus dem Tango-Projekt --> Gnome, XFCE,...).

Hat jemand einen Tip für mich, wo ich ein Rädchen drehen soll, damit es funktioniert? Dankeschön.

Oha, da fällt mir noch etwas ein:
kann man eigentlich während der Laufzeit Bilder in die ImageList nachladen, bzw. rausschmeissen? Ich habe zwar den Eintrag für die ImageList in der Quelldatei der Form gefunden, aber soweit ich das nachvollziehen kann, wird dort nur ein Eintrag "Bitmap" gemacht, der aus kilometern von Code besteht, der wohl die Bilder in ihrem Bytecode oder so darstellt. Sieht man auch wo, wie und aus welchem Pfad die Bilder geladen werden??

Danke.

Euklid
Lazarusforum e. V.
Beiträge: 2808
Registriert: Fr 22. Sep 2006, 10:38
OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
Wohnort: Hessen
Kontaktdaten:

Re: TImageList : Die Einträge (Art, Eigenschaften)

Beitrag von Euklid »

bembulak hat geschrieben: Die Bilderchen haben immer einen "Rosa" Hintergrund. Und das, obwohl die Icons Transparenz besitzen und die PNGs auch.
Hallo Bembulak!

Habe die Imagelist selbst nie verwendet. Soweit ich weiß wird bei Transparenz die Hintergrundfarbe durchgelassen? Vielleicht ist die ja auf rosa eingestellt?

Gruß, Euklid

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Naja, es ist ein wenig sonderbar. Ich bin noch nicht sehr firm mit diesen Dingen. Es ist jedenfalls so, dass ich im Moment ein transparentes Icon und als Hintergrundfarbe "clNone" verwendet. Es wird nun jedoch "Weiß" angezeigt, mit dem ich aber für's Erste durchaus leben kann. Bei der Hintergrundfarbe kann man derartig viele wählen, dass ich mich erst durchgraben muss. Vielleicht gibt es ja auch ein "clTransparent"? Obwohl das keine Farbe wäre.

Was die Anzeige betrifft, bin ich jedenfalls nun zufriedener, wenn auch nicht ganz überzeugt.

Wie sieht es mit dem Nachladen, ... aus? Ich meine die anderen Fragen von oben?

Danke.

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Du musst die Farbe einstellen, welche im Endeffekt Transparent erscheinen soll. Daher besitzen viele Icons (die nicht von Haus aus wie bei PNG möglich Trnaparenz besitzen) diese seltsame Farbe, damit diese als Transparenz umgewandelt werden kann und keine Farbe aus dem eigentlichen Icon mit verschwindet.
Die entsprechende 'transparente Farbe' kannst du in der IL setzen bzw. im Listeneditor (Doppelklick auf die Imagelist; siehe aber hier: http://www.lazarusforum.de/viewtopic.php?p=14539#14539" onclick="window.open(this.href);return false; )

Wenn du Bilder zur Lafzeit löschen willst, musst du dir aber bewusst sein, das sich bei allen nachfolgenden Bildern der Index ändert, was eventuell die zuordnung zerstört.
Löschen geht über Delete()
Dranhängen müsste mit Add() gehen.
Johannes

Antworten