AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language TVirtualStringTree incremental search: wie finde ich weitere passende Nodes
Thema durchsuchen
Ansicht
Themen-Optionen

TVirtualStringTree incremental search: wie finde ich weitere passende Nodes

Ein Thema von ggscholz · begonnen am 23. Dez 2023 · letzter Beitrag vom 23. Dez 2023
Antwort Antwort
ggscholz

Registriert seit: 20. Nov 2013
Ort: Aachen
64 Beiträge
 
Delphi 11 Alexandria
 
#1

TVirtualStringTree incremental search: wie finde ich weitere passende Nodes

  Alt 23. Dez 2023, 15:45
Delphi-Version: 11 Alexandria
Hallo in die Runde,

ich finde keine Lösung, um von einem im VirtualStringTree mit
Code:
IterateSubtree
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
Gerd
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
877 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: TVirtualStringTree incremental search: wie finde ich weitere passende Nodes

  Alt 23. Dez 2023, 19:14
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?
The angels have the phone box.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz