Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Node in TreeView markieren


merlin83 - Do 16.09.04 21:39
Titel: Node in TreeView markieren
Schönen guten Abend!

Ich verwende ein TreeView und erstelle dort eine Baumstruktur (was auch sonst). Nun möchte ich, dass ein neues Item markiert wird, nachdem es erstellt wurde. Ich weiß von dem Element nur den Namen (Text), der eindeutig ist, daran kann das Element also identifiziert werden. Ich will aber nicht extra den ganzen Baum durchgehen, jedes Item auf seinen Namen überprüfen, Index auslesen und dann markieren, das wäre zu umständlich. Gibt es eine andere Möglichkeit?

Vielen Dank im Voraus!


GSE - Do 16.09.04 21:40

wie sonst, wenn du nur die bezeichnung hast?
alternativ HashedStringlIst mit den Bezeichnung an der Position des Indexes und dann mit IndexOf (macht aber ja auch nichts anderes als zu suchen)

und warum ist das kompliziert?

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
function FindNodeByText(NodeText: string; StartNode: TTreeNode): TTreeNode;
var
 i: integer;
 wasfound: boolean;
begin
 wasfound := false;
 NodeText := UpperCase(NodeText);
 if NodeText <> '' then
  while StartNode <> nil do
  begin
   if Pos(NodeText, UpperCase(StartNode.Text)) <> 0 then
   begin
    result := StartNode;
    wasfound := true;
    break;
   end;
   StartNode := StartNode.GetNext;
  end;
 
 if not wasfound then
  result := nil;
end;


mfg
GSE


merlin83 - Do 16.09.04 21:43

Ja, das habe ich gefragt. Die Antwort hat nicht wirklich geholfen...
Kann doch auch sein, dass es ne Methode gibt, mit der man die Items direkt ansprechen kann.


GSE - Do 16.09.04 21:45

TreeView.Items ?

s. Code in meinem ersten Posting...

mfg
GSE


merlin83 - Do 16.09.04 21:48

Gut, das ist zwar keine Ideallösung, aber das passt schon. Vielen Dank!


iKilledKenny - Fr 17.09.04 10:40

Zitat:

Nun möchte ich, dass ein neues Item markiert wird, nachdem es erstellt wurde.


wenn du ein item gerade erstellt hast, dann hast du doch den knoten. dann einfach


Delphi-Quelltext
1:
Knoten.Selected := True;                    


und schon ist der knoten im baum ausgewählt.


merlin83 - Fr 17.09.04 11:18

Nein, habe ich eben nicht, weil ich es nur anhand seines Namens erstellt habe. Aber mit der Funktion von GSE funktionierts auch.


iKilledKenny - Fr 17.09.04 13:09

also wenn ich


Delphi-Quelltext
1:
Knoten := Tree.Items.Add (nil'test');                    


mache, dann habe ich einen knoten...
vielleicht solltest du den knoten einfach dort schon selektieren, wo du ihn erstellst.