Hallo in die Runde,
ich finde keine Lösung, um von einem im VirtualStringTree mit
gefundenen Node den nächsten zu finden (den es gibt)
Im VST ist
Code:
IncrementalSearch = isAll
IncrementalSearchDirection = sdForward
IncrementalSearchStart = ssFocusedNode
eingestellt
Das hier sind die Proceduren, die bei der Eingabe in eine Editfeld den ersten Eintrag in einem Datenfeld finden (
hier gefunden).
Code:
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;
Wenn ich dann über einen Button
Code:
foundNode := (vst.FocusedNode, SearchForText, pointer(SearchItemNbr.text)
versuche, die Suche ab der gefundenen Stelle fortzusetzen, wird nicht weiter im Baum gesucht.
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