Delphi-PRAXiS

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 Wie kann ich rausfinden ob ein trreviewitem mehr als 1 paren (https://www.delphipraxis.net/29859-wie-kann-ich-rausfinden-ob-ein-trreviewitem-mehr-als-1-paren.html)

vollmer-net 15. Sep 2004 16:05


Wie kann ich rausfinden ob ein trreviewitem mehr als 1 paren
 
Hi,


Wie kann ich rausfinden ob ein trreviewitem mehr als 1 parent hat?

Gruß

Alex

Luckie 15. Sep 2004 16:06

Re: Wie kann ich rausfinden ob ein trreviewitem mehr als 1 p
 
In dem du einafch von immer jeweils den Parent abfragst und wenn die Abfrage Delphi-Referenz durchsuchenHasParent Fales ergibt, hast du sie alle.

vollmer-net 15. Sep 2004 16:11

Re: Wie kann ich rausfinden ob ein trreviewitem mehr als 1 p
 
aber wie kann ich das machen...

so sieht z.B. das treeview aus...

Code:
test
    -test1
         - test2
jetzt vrauche ich den namen von test1 und test, die dynamisch generiert sind und ich herausfinden muss!

aber wie?

alex

ipworks 15. Sep 2004 16:20

Re: Wie kann ich rausfinden ob ein trreviewitem mehr als 1 p
 
Schlag doch mal unter der Hilfe von Delphi nach:
Begriffe:
TTreenode.HasParent
TTreenode.HasChildren
TTreenode.Index

Desweiteren kannst Du mit AbsoluteIndex arbeiten.
Wenn Du weitere Fragen hast (vielleicht ein wenig präziser) kann ich u.U. auch ein bisschen Source-Code posten.

mfg
Peter

vollmer-net 15. Sep 2004 16:23

Re: Wie kann ich rausfinden ob ein trreviewitem mehr als 1 p
 
ich weiß immer noch nicht wie ich das machen soll...

ich muss einfach nur wissen ob der eintrag einen oder 2 parents hat,

wenn er 2 hat muss ich den namen von parent 1 und 2 wissen!

ipworks 15. Sep 2004 16:37

Re: Wie kann ich rausfinden ob ein trreviewitem mehr als 1 p
 
OK,
also aus dem Kopf

Delphi-Quellcode:
var
Checknode: TTreeNode;
x: Byte;
begin
   try
    //--Zähler
    x:=0;
    //----Irgendein gewählter Treenode
    Checknode:=TreeView1.Selected;
    while Checknode.Parent<>nil do begin
      Inc(x);
      Checknode:=Checknode.Parent;
    end;
    ShowMessage(Treeview1.Selected.Text+' hat '+InttoStr(x)+' Parentnodes');
end;
Hab's nicht getestet, sondern gerade aus dem Kopf geschrieben.
Hoffe es hilft.
Lass es uns wissen.
mfg
Peter

vollmer-net 15. Sep 2004 17:05

Re: Wie kann ich rausfinden ob ein trreviewitem mehr als 1 p
 
ok, so hats funktioniert:
Code:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);

var
Checknode: TTreeNode;
x: Byte;
begin
   try
    //--Zähler
    x:=0;
    //----Irgendein gewählter Treenode
    Checknode:=TreeView1.Selected;
    while Checknode.Parent<>nil do begin
      Inc(x);
      Checknode:=Checknode.Parent;
    end;
    ShowMessage(Treeview1.Selected.Text+' hat '+InttoStr(x)+' Parentnodes');
   finally
   end;
    end;
meine frage jetzt aber folgendes...wie bekomme ich jetzt den text, von den parents zu sehen? das heißt, wenn es 2 parents gibt das ich den text von parent 1 + den text von parent 2 bekomme

ipworks 15. Sep 2004 17:14

Re: Wie kann ich rausfinden ob ein trreviewitem mehr als 1 p
 
ok sorry....hatte den exception-Handler am Ende vergessen.
Delphi-Quellcode:
try
...
except end;
so Du möchtest den Text kombinieren?

Delphi-Quellcode:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
const
// falls Du einen Separator zwischen die Nodetext einfügen willst
Separator:String='\\';
var
Checknode: TTreeNode;
x: Byte;
nodetext: string;
begin
   try
    //--Zähler
    x:=0;
    //----Irgendein gewählter Treenode
    Checknode:=TreeView1.Selected;
    nodetext:=Checknode.Text;
    while Checknode.Parent<>nil do begin
      Inc(x);      
      Checknode:=Checknode.Parent;
      nodetext:=Checknode.Text+Separator+nodetext;
    end;
    ShowMessage(Treeview1.Selected.Text+' hat '+InttoStr(x)+' Parentnodes'+#13+'Gesamtnodetext: '+nodetext);
   except end;
    end;
War das deine Frage?

vollmer-net 15. Sep 2004 17:53

Re: Wie kann ich rausfinden ob ein trreviewitem mehr als 1 p
 
ok, danke schon mal , das ist sehr gut!

aber ich habe noch folgendes problem!


Code:
procedure TForm1.TreeView1Change(Sender: TObject; Node: TTreeNode);
const
// falls Du einen Separator zwischen die Nodetext einfügen willst
Separator:String='\\';
var
Checknode: TTreeNode;
x: Byte;
nodetext: string;
begin
   try
    //--Zähler
    x:=0;
    //----Irgendein gewählter Treenode
    Checknode:=TreeView1.Selected;
    nodetext:=Checknode.Text;
    while Checknode.Parent<>nil do begin
      Inc(x);      
      Checknode:=Checknode.Parent;
      nodetext:=Checknode.Text+Separator+nodetext;
    end;
    Memo1.lines.loadfromfile(extractfilepath(paramstr(0))+'verzeichnis\'+nodetext);
   except end;
    end;
so, ich lese praktisch die verzeichnisstruktur ins treeview ein...dann möchte ich so die dateien öffnen...jetzt sagt er mir aber bei dem ersten unterknoten, dass die datei nicht geöffnet werde kann. klar, denn das ist ja auch keine datei...aber ich kann ich jetzt noch prüfen ob die angeklickte datei ein parent ist? denn es sollen nur die richtigen endtreevieweinträge geladen werden

vollmer-net 15. Sep 2004 17:55

Re: Wie kann ich rausfinden ob ein trreviewitem mehr als 1 p
 
hat sich schon erledigt


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:27 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