Autor Beitrag
Krefti
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

Win XP/Vista/Win7/ubuntu
Delphi 7/2006/2009 Pro
BeitragVerfasst: Sa 18.04.09 11:53 
Hallo zusammen,

ich hab mal wieder ein Problem mit meinem Treeview.

und zwar möchte ich im code einen bestimmten node selektieren.

dazu gibt es ja die Methode
ausblenden Delphi-Quelltext
1:
Treeview.select(Treeview.Items.item[i])					
. nur weiß ich nicht genau, bzw. versteh ich nicht, wie ich in der Klammer die Hierarchieebene festlegen muss/kann, so dass er weiß, welcher Eintrag selektiert wurde.
Wäre super, wenn ihr mir helfen könnten.
Danke!
Gruß

Krefti
Chemiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 194
Erhaltene Danke: 14

XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit
D7, BDS 2006, RAD Studio 2009+C++, Delphi XE2, XE3, VS 2010 Prof.
BeitragVerfasst: Sa 18.04.09 12:15 
Hallo Krefti,

So kann man feststellen welcher Knoten ausgewählt worden ist.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
procedure TForm3.TreeView1Click(Sender: TObject);
begin
  if TreeView1.Selected <> NIL then
  begin

mit:

ausblenden Delphi-Quelltext
1:
2:
if TreeView1.Selected.Level=2 then
    begin

ist es möglich die Ebene abzufragen.

Bis bald Chemiker
Krefti Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

Win XP/Vista/Win7/ubuntu
Delphi 7/2006/2009 Pro
BeitragVerfasst: Sa 18.04.09 13:41 
danke für deine schnelle antwort.

glaub du hast mich falsch verstanden.

ich möchte nicht einen per mouseklick selektierten knoten abfragen, sondern im quellcode selbst einen knoten selektieren und mit diesem etwas machen..

das sollte glaub ich mit dem
ausblenden Delphi-Quelltext
1:
treeview.select(treeview.items.item[])					


gehen. Ich komme allerdings mit der Ebenen auswahl nicht zurecht..

hoff ich hab mich jetzt verständlicher ausgedrückt...Danke nochmal
Chemiker
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 194
Erhaltene Danke: 14

XP, Vista 32 Bit, Vista 64 Bit, Win 7 64 Bit
D7, BDS 2006, RAD Studio 2009+C++, Delphi XE2, XE3, VS 2010 Prof.
BeitragVerfasst: Sa 18.04.09 14:07 
Hallo Krefti,

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
var
  TempNode: TTreeNode;
begin
    TempNode:= Nod.GetFirstNode; 
    while TempNode <> NIL do     
    begin
      .....
    end;
    TempNode:= TempNode.getNext;               
  end;

man könnte den Knoten mit GetNext durchgehen und in der Schleife abprüfen ob es der richtige Knoten ist.

Ein Beispiel:

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
{-------------------------------------------------------------------------------
function:   TVNodeInsert(); overload;
ltz.Aendr.: 19.04.2007
Parameter:  Nod: TTreeNodes               // TTreeView.Items - Liste
            var NeueNode: TTreeNode       // Neuer Knoten zurückgeben
            const strElternKnoten: String // ElternKnoten
            const strKnoten: String       // Knoten der am ElternKnoten kommt
Rueckgabe:  TRUE= Knoten eingetragen FALSE= Knoten nicht eingetragen
Beschr.:    Mit dieser Funktion wird ein neuer Knoten an die richtige Stelle
            im TTreeView eingetragen. Bei dieser Funktion muss mindestens 1
            Knoten schon vorhanden sein. Es wird die Stelle in TTreeView ge-
            sucht die mit der Elternknoten übereinstimmt und der neue Knoten,
            wenn er noch nicht vorhanden ist angehängt.
Aufruf:     TVNodeInsert(MS_TV.Items,  Ebene2, 'Meßstellen', 'EO-Tank');
-------------------------------------------------------------------------------}

function TVNodeInsert (Nod: TTreeNodes; var NeueNode: TTreeNode;
                       const strElternKnoten: String;
                       const strKnoten: String): boolean; overload;
var
  TempNode: TTreeNode;
begin
  result:= FALSE;              // Es ist kein Knoten im Baum eingetragen worden
  TempNode:= Nod.GetFirstNode; // Hier wird der Root-Knoten in TempNode gespeichert
  while TempNode <> NIL do     // Solange wiederholen, bis TempNode = NIL ist
  begin
    If (CompareText(TempNode.Text, StrElternKnoten)=0then
    begin
      if NOT(IstDoppelt(Nod, strKnoten)) then // Ist der Knoten nicht vorhanden
      begin
        NeueNode:= Nod.AddChild(TempNode,StrKnoten); // Neuer Knoten eintragen
        Result:= TRUE;                          // Es ist ein Knoten eingetragen
      end;
    end;
    TempNode:= TempNode.getNext;                // Nächster Knoten in TempNode
  end;
end;
{-------------------------------------------------------------------------------



Wenn ich immer noch nicht verstanden haben sollte, mal mitteilen was Du mit dem Knoten vor hast.

Bis bald Chemiker
Krefti Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

Win XP/Vista/Win7/ubuntu
Delphi 7/2006/2009 Pro
BeitragVerfasst: Sa 18.04.09 14:30 
hmm..ich denke du hast immer noch nicht verstanden, was ich genau möchte...ich hab ein ziemlich triviales problem..;-)

ich versuche mal die frage anders zu formulieren:

wie markiere ich im treeview einen node mit hilfe des index über den quellcode...??
Krefti Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 164

Win XP/Vista/Win7/ubuntu
Delphi 7/2006/2009 Pro
BeitragVerfasst: Sa 18.04.09 15:32 
danke nochmals für deine hilfe..hat sich inzwischen erledigt..ich dödel hab was ganz einfaches übersehen.... :autsch: :think: