Autor Beitrag
Skorsi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 16



BeitragVerfasst: Fr 05.03.04 09:58 
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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: 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

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
Coder
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Do 15.07.04 20:01 
Wie geht das zur Laufzeit?
Keldorn
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 2266
Erhaltene Danke: 4

Vista
D6 Prof, D 2005 Pro, D2007 Pro, DelphiXE2 Pro
BeitragVerfasst: Do 15.07.04 20:25 
einfach der treenode einen imageindex zuwesien, oder was meinst du genau :gruebel:

_________________
Lükes Grundlage der Programmierung: Es wird nicht funktionieren.
(Murphy)
Coder
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1383
Erhaltene Danke: 1

WinXP
D2005 PE
BeitragVerfasst: Fr 16.07.04 18:02 
Aha.
Wie programmiert man das? (Source?)
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 20



BeitragVerfasst: 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:

user defined image

Danke,

-M
Bulvaye
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 37

Windows Xp
Delphi 7 Enterprise
BeitragVerfasst: 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:

ausblenden 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

_________________
Gesegnet ist, dessen Geist zu klein für jedweden Zweifel ist.