![]() |
Delphi-Version: 11 Alexandria
TVirtualStringTree incremental search: wie finde ich weitere passende Nodes
Hallo in die Runde,
ich finde keine Lösung, um von einem im VirtualStringTree mit
Code:
gefundenen Node den nächsten zu finden (den es gibt)
IterateSubtree
Im VST ist
Code:
eingestellt
IncrementalSearch = isAll
IncrementalSearchDirection = sdForward IncrementalSearchStart = ssFocusedNode Das hier sind die Proceduren, die bei der Eingabe in eine Editfeld den ersten Eintrag in einem Datenfeld finden ( ![]()
Code:
Wenn ich dann über einen Button
procedure TfVST.SearchForText(Sender: TBaseVirtualTree; Node: PVirtualNode;
Data: Pointer; var Abort: Boolean); var NodeData: PTreeData; //replace by your record structure begin NodeData := Sender.GetNodeData(Node); Abort := AnsiStartsStr(string(data), NodeData.FItemnNbr); //abort the search if a node with the text is found. end; procedure TfVST.SearchItemNbrChange(Sender: TObject); var foundNode : PVirtualNode; begin inherited; //first param is your starting point. nil starts at top of tree. if you want to implement findnext //functionality you will need to supply the previous found node to continue from that point. //be sure to set the IncrementalSearchTimeout to allow users to type a few characters before starting a search. foundNode := vst.IterateSubtree(nil, SearchForText, pointer(SearchItemNbr.text)); if Assigned (foundNode) then begin vst.FocusedNode := foundNode; vst.Selected[foundNode] := True; end;
Code:
versuche, die Suche ab der gefundenen Stelle fortzusetzen, wird nicht weiter im Baum gesucht.
foundNode := (vst.FocusedNode, SearchForText, pointer(SearchItemNbr.text)
Hat jemand eine Hinweis, wie ich die Suche im Baum ab dem gefundenen Node fortsetzen kann? Mit dem Hinweis im Beispielcode komme ich nicht weiter Beste Grüße und erholsame Feiertage wünscht euch Gerd |
AW: TVirtualStringTree incremental search: wie finde ich weitere passende Nodes
Ist in dem Konzept der (neue) Startknoten wirklich der aktuell fokussierte, der ja auch einen Treffer geben würde? Oder muss man für den nächsten Treffer explizit einen Knoten später starten?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10: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