Delphi-PRAXiS
Seite 2 von 2     12   

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 TTreeView Frage (https://www.delphipraxis.net/156357-ttreeview-frage.html)

DeddyH 30. Nov 2010 09:42

AW: TTreeView Frage
 
Irgendwie sieht mir das zu kompliziert aus. Ginge das nicht auch einfach so (aus dem Kopf getippt, daher ungetestet)?
Delphi-Quellcode:
procedure TForm1.ShowDirectory(_Tree: TTreeView; const _sVerzeichnis: string; _KnotenRoot: TTreeNode);

{$region 'Kommentar ShowDirectory( _Tree:TTreeView, _sVerzeichnis:string, _Eintrag:TTreeNode, )'}
{*
   Beschreibung : Procedur baut aus einer Pfadangabe einen TreeView
 
   @param _Tree : der Tree der neu erstellt wird
   @param _sVerzeichnis : das QuellVerzeichnis aus dem der Tree entsteht
   @param _Eintrag : der erste Startknoten
}
{$endregion}
var
   SearchRec : TSearchRec;
   KnotenNeu : TTreeNode;
   verz : string;
begin
   Assert(Assigned(_Tree));
   verz := IncludeTrailingPathDelimiter(_sVerzeichnis);
   _Tree.Items.BeginUpdate;
   try
     if FindFirst(verz + '*.*',faDirectory, SearchRec) = 0 then
     try
        repeat
           if (SearchRec.Attr and faDirectory = faDirectory) and
              (SearchRec.Name <> '.') and
              (SearchRec.Name <> '..') then
           begin
              KnotenNeu := _Tree.Items.AddChild(_KnotenRoot, SearchRec.Name);
              ShowDirectory(_Tree, verz + SearchRec.Name, KnotenNeu);
           end;
        until FindNext(SearchRec) <> 0 ;
     finally
        FindClose(SearchRec);
     end;
   finally
     _Tree.Items.EndUpdate;
   end;
end;
[edit] Achja, BeginUpdate und EndUpdate sind wohl in der aufrufenden Routine besser aufgehoben als in der Rekursion. Trotzdem lass ich das erstmal so. [/edit]

Ascuriah 1. Dez 2010 10:57

AW: TTreeView Frage
 
Moin Moin

Ich ruf den Thread hier wieder auf da ich denk das das zur selben Thematik bezüglich TreeView gehört.
Undzwar habe ich meine Funktion zum Erstellen des TreeViews jetzt umgebaut und sie funktioniert tadellos.

Kann mir jemand sagen welches Ereigniss ich nutzen muss, um bei einem Doppelklick auf einen Knoten, diesen in ein Memo oder ein ListView einfügen kann? (Das normale dblClick-Event kann ich nicht nutzen da dieses ja fur den ganzen Baum, sprich auch für den leeren weißen Bereich gilt, es aber nur beim dbl-klicken auf einen Knoten auslösen darf.

Ich hoffe die Problematik wird einigermaßen klar

mfg

DeddyH 1. Dez 2010 12:02

AW: TTreeView Frage
 
Doch, OnDblClick geht.
Delphi-Quellcode:
procedure TForm1.TreeView1DblClick(Sender: TObject);
var Item: TTreeNode;
    P: TPoint;
begin
  //Maus- in Clientkoordinaten umrechnen
  P := Treeview1.ScreenToClient(Mouse.CursorPos);
  //Knoten an dieser Stelle ermitteln
  Item := Treeview1.GetNodeAt(P.X, P.Y);
  //wenn einer da -> ausgeben
  if Assigned(Item) then
    ShowMessage(Item.Text);
end;

Ascuriah 1. Dez 2010 12:13

AW: TTreeView Frage
 
Hey klasse das funktionert prima danke noch ma da wär ich niemals draufgekommen.

Ascuriah 28. Dez 2010 14:09

AW: TTreeView Frage
 
Zitat:

Zitat von DeddyH (Beitrag 1065370)
Doch, OnDblClick geht.
Delphi-Quellcode:
procedure TForm1.TreeView1DblClick(Sender: TObject);
var Item: TTreeNode;
    P: TPoint;
begin
  //Maus- in Clientkoordinaten umrechnen
  P := Treeview1.ScreenToClient(Mouse.CursorPos);
  //Knoten an dieser Stelle ermitteln
  Item := Treeview1.GetNodeAt(P.X, P.Y);
  //wenn einer da -> ausgeben
  if Assigned(Item) then
    ShowMessage(Item.Text);
end;

Hm das Problem daran ist, das nur auf einen Doppelclick direkt auf den Text die Funktion auslösen darf, mach ich das so wie du hier geschrieben hast, dann reagiert die Funktion auch auf DoppelClicks auf den erweitern/verstecken Pfeil. Ich müsste es irgendwie hinkriegen das nur auf einen Doppelklick genau auf den Text die Funktion weiterläuft


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:53 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz