![]() |
VirtualStringTree Komponente
Hi Delphianer
Ich habe eine VirtualStringTree mit 2 Columns die ich befülle.
Delphi-Quellcode:
Nun möchte ich im Column 0 mit den Vornamen noch ein Symbol aus ner ImageList setzen.
procedure TForm1.VSTGetNodeDataSize(Sender: TBaseVirtualTree; var NodeDataSize: Integer);
begin NodeDataSize := SizeOf(TTreeData); end; procedure TForm1.VSTGetText(Sender: TBaseVirtualTree; Node: PVirtualNode; Column: TColumnIndex; TextType: TVSTTextType; var CellText: string); var Data: PTreeData; begin Data := VST.GetNodeData(Node); case Column of 0: CellText := Data^.Column0; 1: CellText := Data^.Column1; 2: CellText := Data^.Column2; end; end; procedure TForm1.BitBtn1Click(Sender: TObject); var Data: PTreeData; XNode: PVirtualNode; Rand: Integer; begin XNode := VST.AddChild(nil); if VST.AbsoluteIndex(XNode) > -1 then begin Data := VST.GetNodeData(Xnode); Data^.Column0 := 'Vorname'; Data^.Column1 := 'Nachname'; Data^.Column2 := 'Strasse'; end; end; In der Normalen ListView konnte man das ja mit z.b ImageIOndex = 1 machen. Wie muss man das genau bei der VirtualStringTree machen machen. |
AW: VirtualStringTree Komponente
Schau dir mal die Property
Delphi-Quellcode:
und das Event
Images
Delphi-Quellcode:
bzw.
OnGetImageIndex
Delphi-Quellcode:
an.
OnGetImageIndexEx
Alternativ kannst du auch in einem der Paint Events das Image selbst zeichnen. Dann musst du aber alles selbst machen (oder entsprechende Werte wie TextMargin setzen oder so), da der Tree bei den Events OnGetImageIndex(ex) die Breite des Images mit einrechnet und den Text entsprechend verschiebt. |
AW: VirtualStringTree Komponente
Liste der Anhänge anzeigen (Anzahl: 1)
Ha jetzt in der Procedure GetImageIndexEx den ImageIndex eingetragen und das funktioniert und die icons werden angezeigt.
Delphi-Quellcode:
Allerdings bekomme ich nach paar Sekunden folgende Fehlermeldung.
procedure TForm1.VSTGetImageIndexEx(Sender: TBaseVirtualTree; Node: PVirtualNode; Kind: TVTImageKind; Column: TColumnIndex; var Ghosted: Boolean; var ImageIndex: TImageIndex);
begin ImageIndex := 1; end; Anhang 48116 |
AW: VirtualStringTree Komponente
Versuch ImageIndex := X mal hier reinzupacken
Delphi-Quellcode:
if Column = 0 then
if Kind in [ikNormal, ikSelected] then begin end; |
AW: VirtualStringTree Komponente
Zitat:
|
AW: VirtualStringTree Komponente
Zitat:
|
AW: VirtualStringTree Komponente
Zitat:
Es gibt insgesamt 4 Stati:
Die letzten beiden sind ohne Gewähr. Ich nutze die selbst eigentlich nie. Auch im SourceCode des Trees sind die ImageKinds nicht erklärt. Obwohl der SourceCode beim VST eigentlich die beste Hilfe ist. Overlay und State werden auch nur sehr selten im Tree selbst verwendet. ikState 9x und ikOverlay 2x. In der Regel kommt man aber mit ikNormal und ikSelected aus. Alles andere sollte man dann sowieso besser selbst malen. |
AW: VirtualStringTree Komponente
Hat super funktioniert danke :-D
|
AW: VirtualStringTree Komponente
Wie benutzt man denn diese 2 Befehle wenn man ne VirtualStringTree benutzt.
Beispiel ist für ne normale ListView Komponente.
Delphi-Quellcode:
weil FindCaption und Items fehlen bei der VirtualStringTree.
ListItem := form1.ListView1.FindCaption(0, EntryString, False, True, False);
for I := form1.ListView1.Items.Count - 1 downto 0 do |
AW: VirtualStringTree Komponente
Hast du keine parallel geführte Liste mit deinen TTreeData-Objekten?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz