Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Bilder in Treeview anzeigen
Skorsi - Fr 05.03.04 09:58
Titel: Bilder in Treeview anzeigen
Hallo,
ich möchte gerne in einer Treeview neben den Einträgen Bilder angezeigt haben.
Ich weiß auch dass man dazu die Eigenschaft Images benutzen kann,
doch weiß ich nicht was eine TCustomImageList ist und wie sie verwendet wird.
Danke für eure Hilfe
Keldorn - Fr 05.03.04 19:58
Hallo
Du packst eine Imalist-komponente (win32Reiter) auf die Form und lädst dort deine Images rein.
unter Treevie.images weißt du jetzt diese imagelist zu. Unter den Items kannst du dann die entsprechende Bildindex setzen.
Mfg Frank
Coder - Do 15.07.04 20:01
Wie geht das zur Laufzeit?
Keldorn - Do 15.07.04 20:25
einfach der treenode einen imageindex zuwesien, oder was meinst du genau :gruebel:
Coder - Fr 16.07.04 18:02
Aha.
Wie programmiert man das? (Source?)
Delete - Fr 16.07.04 21:45
Keldorn hat´s doch geschrieben:
Keldorn hat folgendes geschrieben: |
einfach der treenode einen imageindex zuwesien, [...] |
"ImageIndex" ist ein Integer und bekommt den passenden Wert aus deiner ImageList. Die Zählweise ist Null-basierend, d.h. das erste Bild in der Liste hat den Wert Null, das zweite Eins, usw.
Nerzhul - Fr 16.07.04 23:48
Hallo,
Ich hoffe es ist ok wenn ich meine Frage hier gleich im Anschluß poste, sie passt jedenfalls gut zum Thema:
Also, ich möchte in einem Treeview auch Bilder anzeigen lassen. Das geht mit einer ImageList und den entsprechenden Indexen setzen gut.
Das Problem: Wie kann ich verhindern, dass die Bildbreite freigelassen wird, wenn einem Knoten kein Bild zugewiesen wird? Gibt es da evtl. Eigenschaften des Treeviews oder der Knoten die ich übersehen habe, oder muss ich den Baum jetzt selber zeichnen?
Zur Verdeutlichung ein kleiner Screenshot:
Danke,
-M
Bulvaye - Mi 21.07.04 23:06
Um's selber zeichnen kommst Du da meines Wissens wohl nicht drum herum. Du nimmst einfach das OnCustomDrawItem-Event und zeichnest alle Node-Texte, die kein Image zugewiesen bekommen haben, selbst - und zwar genau um die Image-Breite nach links versetzt. Ich bin jetzt aus dem Stehgreif heraus überfragt, ob es noch irgend einen Offset zu berücksichtigen gilt, aber ich würde es grundsätzlich folgendermaßen machen:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| procedure CustomDrawItem(Sender: TCustomTreeView; Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean); begin DefaultDraw := Node.ImageIndex > -1; if not DefaultDraw then with Node.DisplayRect(True) do Tree.Canvas.TextOut(Left - ImageList.Width, Top, Node.Text); end; |
Grüße
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!