AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TTreeView Frage

Ein Thema von Ascuriah · begonnen am 29. Nov 2010 · letzter Beitrag vom 28. Dez 2010
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#11

AW: TTreeView Frage

  Alt 30. Nov 2010, 10:42
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]
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ascuriah

Registriert seit: 6. Okt 2010
52 Beiträge
 
#12

AW: TTreeView Frage

  Alt 1. Dez 2010, 11:57
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
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#13

AW: TTreeView Frage

  Alt 1. Dez 2010, 13:02
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;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Ascuriah

Registriert seit: 6. Okt 2010
52 Beiträge
 
#14

AW: TTreeView Frage

  Alt 1. Dez 2010, 13:13
Hey klasse das funktionert prima danke noch ma da wär ich niemals draufgekommen.
  Mit Zitat antworten Zitat
Ascuriah

Registriert seit: 6. Okt 2010
52 Beiträge
 
#15

AW: TTreeView Frage

  Alt 28. Dez 2010, 15:09
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
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:53 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