Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi items suchen in TreeView (https://www.delphipraxis.net/12759-items-suchen-treeview.html)

Micha 3. Dez 2003 18:25


items suchen in TreeView
 
Habe weder im Forum noch in der Delphi-Hilfe was zum Thema "Suchen in einem TreeView" gefunden.

Möchte über Eingabe in ein Edit-Feld ein TreeView durch eben diesen Eingabewert ins Edit durchsuchen lassen.

Meine Werte für den Baum lese ich aus einer Datenbank.

Die Items sollen dann entweder farbig markiert werden oder es sollen eben anderweitig markiert werden.

Hat jemand ein solche Suchfunktion schon mal angewendet oder weiß, wie es gehen könnte?

Vielen Dank im Voraus.

Horald 3. Dez 2003 18:42

Re: items suchen in TreeView
 
Hallo,

wie man TreeView direkt durchsucht, weiß ich auch nicht.
Aber ansich müsstest du über eine Schleife alle treenodes durchgehen können,
und dann deinen Suchtext abfragen können.
Und wenn du die Einträge aus einer Datenbank einliest, warum suchst du dann
nicht in der Datenbank. Bei Sql kann du mit SELECT doch sehr elegant die
Datenbank suchen lassen. :gruebel:

Gruß

Horst

:duck:

huberlix 3. Dez 2003 18:43

Re: items suchen in TreeView
 
Code:
Procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);

begin

  case node.Text of

     'AAA': treeview1.canvas.font.Color:=clGreen ;
     ...
     'BBB': treeview1.canvas.font.Color:=clred ;
  end;

.........
.........
nicht getestet!
Gruß,Bernd

Micha 3. Dez 2003 18:45

Re: items suchen in TreeView
 
Das mit der Schleife habe ich mir auch schon gedacht. Aber damit habe ich noch wie was gemacht.

Mit SQL-Befehlen habe ich außerdem auch noch nie gearbeitet.

Gibt es sonst noch Möglichkeiten oder könntest du mir mal ein Beispiel für eine solche Schleife geben?

Ein großes DANKE schon mal.

Micha 3. Dez 2003 19:19

Re: items suchen in TreeView
 
Das ist doch schon mal gut @huberlix

aber mir fehlt leider immer noch was, womit ich den Tree durchsuchen kann.
Kann mir jemand einer solchen Schleife helfen?

Micha 3. Dez 2003 19:26

Re: items suchen in TreeView
 
Etwa so in der Art?

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 i : integer;
begin
TreeView1.Visible := true;
 for i := 0 to TreeView1.Items.Count -1 do
 begin
  if i = 2 then // aber wie bringe ich hier einen String
                //z. B. aus einem Edit unter? 
   begin
    ShowMessage('Suchwert gefunden!');
   end;
 end;
end;

huberlix 3. Dez 2003 19:29

Re: items suchen in TreeView
 
Versteh ich jetzt nicht ganz.
Wenn mich nicht alles täuscht wird TreeView1CustomDrawItem für jeden Node durchlaufen. D.h. der Codeschnipsel von mir müsste reichen. Musst halt in der CaseAnweisung irgendwie deine DBWerte abfragen

OLLI_T 3. Dez 2003 19:35

Re: items suchen in TreeView
 
HY!

Bernd hat völlig recht. Du musst gar nicht suchen, wenn Du das Ergebnis nur Visualisieren willst. Es reicht aus, z.B. die Variablen FSuchText_1,FSuchText_2:String entsprechend der Suchanfrage(n) zu setzen und dann mit Treeview.Invalidate ein Neuzeichnen der Baumansicht zu erzwingen.

@Bernd: Ich klau mal gerade Deinen Code: :zwinker:

Delphi-Quellcode:
Procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
Begin
  Case node.Text of
     FSuchText_1: treeview1.canvas.font.Color:=clGreen ;
     FSuchText_2: treeview1.canvas.font.Color:=clred ;
  end;
End;

Procedure TForm1.StartNewSearch;
Begin
  FSuchText_1: Edit1.Text ;
  FSuchText_2: Edit1.Text;
  Treeview.Invalidate;
End;
Viele Grüsse

OLLI

Micha 3. Dez 2003 19:43

Re: items suchen in TreeView
 
O.K., sorry, stimmt, is einfacher. :wall:

Aber wenn ich

Delphi-Quellcode:
...
case node.Text of
...
schreibe, dann bekomme ich einen Fehler, dass ein Ordinaltyp erforderlich sei.

huberlix 3. Dez 2003 19:46

Re: items suchen in TreeView
 
Also das mit der CaseAnweisung funktioniert nicht. StringTypen sind da nicht erlaubt.
Jetzt hab ich mal ein Treeview mit den Werten A,B,C und D vorbelegt, und mit if/then nach ABCD abgefragt. Der Baum wird vierfarbig gezeichnet.
Hier die Prozedur:
Code:
procedure TForm1.TreeView1CustomDrawItem(Sender: TCustomTreeView;
  Node: TTreeNode; State: TCustomDrawState; var DefaultDraw: Boolean);
begin
  If node.Text= 'A' then
    treeview1.canvas.font.Color:=clGreen
  else
  If node.Text= 'B' then
    treeview1.canvas.font.Color:=clred
  else
  If node.Text= 'C' then
    treeview1.canvas.font.Color:=clyellow
  else
  If node.Text= 'D' then
    treeview1.canvas.font.Color:=clblue ;

end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:46 Uhr.
Seite 1 von 2  1 2      

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