![]() |
VirtualTreeView: Konten n auswählen/markieren
Hallo zusammen.
Wie kann ich im Code den Knoten n auswählen/markieren/fokusieren? Ich habe es mal so versucht, bekomme aber ne Exception:
Delphi-Quellcode:
Wie mache ich es richtig?
myVST.FocusedNode.Index := StrToInt(EditListCount.Text);
Vielen Dank :dp: |
Re: VirtualTreeView: Konten n auswählen/markieren
Delphi-Quellcode:
vst.FocusedNode := NodeToFocus;
if Assigned(vst.FocusedNode) then vst.Selected[vst.FocusedNode] := True; |
Re: VirtualTreeView: Konten n auswählen/markieren
Wenn ich es so mache:
Delphi-Quellcode:
bekomme ich folgenden Fehler:
var
NodeToFocus : Integer; begin NodeToFocus := StrToInt(EditListCount.Text); VST.FocusedNode := NodeToFocus; if Assigned(VST.FocusedNode) then VST.Selected[VST.FocusedNode] := True; ... ... Zitat:
|
Re: VirtualTreeView: Konten n auswählen/markieren
Kenne VST nicht, aber es wird offenbar ein Zeiger auf eine Node erwartet. Du musst also aus dem Integer-Index einen Zeiger auf eine Node machen. Im "normalen" Treeview gibt's da "Items[Index]"...
|
Re: VirtualTreeView: Konten n auswählen/markieren
was steht den in EditListCount.Text?
wenn drin steht, dass wievielte node von oben es ist müsste das so gehen:
Delphi-Quellcode:
var node : pvirtualnode; begin node := vst.GetFirst; for i = 0 to strtoint(EditListCount.Text) do begin node := vst.GetNext(node); end; vst.focusednode := node; VST.Selected[VST.FocusedNode] := True; end; |
Re: VirtualTreeView: Konten n auswählen/markieren
VST ist vom Typ VirtualStringTree und NodeToFocus vom Typ PVirtualNode.
|
Re: VirtualTreeView: Konten n auswählen/markieren
Ich möchte gerne einen gewissen Knoten selektieren.
Ich habe also eine Variable vom Typ Integer. In der steht beispielsweise der Wert 12. Wie bekomme ich es nun hin, dass in diesem Fall der zwölfte Knoten mit dem blauen Balken im VST selektiert ist. var NodeToFocus : Integer; begin NodeToFocus := 12; ??? ??? Wie würde es nun weitergehen? EDIT: Zitat:
|
Re: VirtualTreeView: Konten n auswählen/markieren
besser wäre allerdings
Delphi-Quellcode:
node := vst.RootNode.FirstChild;
while node <> nil do begin if Integer(Node.Index) = strtoint(EditListCount.Text) then break; node := Node.NextSibling; end; |
Re: VirtualTreeView: Konten n auswählen/markieren
Zitat:
|
Re: VirtualTreeView: Konten n auswählen/markieren
Nein - sicherer
Bei der vorherigen Variante ist nicht sichergestellt, dass überhaupt soviel Knoten wie der gewünschte Index vorhanden sind. Da kann schon mal ein Node = nil auftreten. Und implizit davon auszugehen, das Node.Index = i ist ist auch etwas schwammig. Zumal Du jetzt noch optimieren kannst, indem Du nicht bei FirstChild anfängst, sondern bei irgend einem Knoten, den Du grad am Wickel hast. Dann musst Du nur noch schauen, ob Dur vorwärts oder rückwärts gehen musst. Das wäre dann was für die Performance. Gruß, Sven |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:08 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 by Thomas Breitkreuz