in TreeView1 suchen

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
Spike1977
Beiträge: 15
Registriert: Mo 13. Nov 2023, 18:11

in TreeView1 suchen

Beitrag von Spike1977 »

Hallo
Es gibt jede menge in google zu finden aber immer kommt irgend ein Fehler den ich nicht verstehe...
Ich bin nicht der MegaMan in Pascal deswegen bin ich jetzt hier.
Ich will in der TreeView1 suchen (Mit nicht gefunden=Ausblenden gefunden=Einblenden)
Ich habe sogar ChatGPT gefragt...
Da habe ich einen Code bekommen mit einen Fehler:
if ContainsText(Node.Text, SearchText) then begin
Der Fehler ist *ContainsText* ...
uses *SysUtils* steht in der Liste drin und es hieß man soll es genau für *ContainsText* eintragen.
Schön aber es funktioniert trotzdem nicht.
Nach Tagelanger herumsuche bin ich jetzt hier gelandet.
Hier ist ein Bild wie mein Programm aussieht und ich will das es endlich mit der Suche funktioniert...
Ich hoffe jemand kann mir weiter helfen.

Code: Alles auswählen


procedure TForm1.Edit1Change(Sender: TObject);
begin
  // SearchTreeViewItems(TreeView1.Items, Edit1.Text);
end;

procedure TForm1.SearchTreeViewItems(TreeNodes: TTreeNodes; const SearchText: string);
var
  Node: TTreeNode;
begin
  //ChatGPT...
  for Node in TreeNodes do
  begin
    // Überprüfen, ob der Text im aktuellen Eintrag gefunden wurde
    if ContainsText(Node.Text, SearchText) then begin
      Node.Selected := True; // Eintrag auswählen
      Node.MakeVisible; // Zu dem Eintrag scrollen, um ihn anzuzeigen

      // Wenn alle gefundenen Einträge angezeigt werden sollen, kommentieren Sie die folgende Zeile aus
      // Break; // Das Programm beendet die Suche nach dem ersten gefundenen Eintrag
    end;

    // Rekursiv alle untergeordneten Einträge durchsuchen
    SearchTreeViewItems(Node.Items, SearchText);
  end;
  
end; 
Dateianhänge
Edit1.TreeView1.jpg
Edit1.TreeView1.jpg (17.47 KiB) 125 mal betrachtet

wp_xyz
Beiträge: 4778
Registriert: Fr 8. Apr 2011, 09:01

Re: in TreeView1 suchen

Beitrag von wp_xyz »

Klassisch ist das "ContainsText" in Pascal realisiert als "pos(Suchtext, Text)" - das gibt den Zeichen-Index (ab 1) zurück, bei dem der SuchText in Text beginnt, oder 0, falls der SuchText nicht enthalten ist. Der Code wäre dann

Code: Alles auswählen

 if pos(Searchtext, Node.Text) > 0 then...
In "modernem" Pascal gibt es Typ-Helper, und der für Strings unterstützt ein .Contains(Suchtext) (https://www.freepascal.org/docs-html/rt ... elper.html):

Code: Alles auswählen

 if Node.Text.Contains(SearchText) then 
Such's dir aus, aber lass die Finger von ChatGPT, das Ding verwirrt mehr als es nützt.

Spike1977
Beiträge: 15
Registriert: Mo 13. Nov 2023, 18:11

Re: in TreeView1 suchen

Beitrag von Spike1977 »

Es funktioniert! Ich bedanke mich!

Antworten