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 ListBox-/View mit Dateien und Verzeichnissen anzeigen (https://www.delphipraxis.net/190376-listbox-view-mit-dateien-und-verzeichnissen-anzeigen.html)

Luckie 28. Sep 2016 22:05

AW: ListBox-/View mit Dateien und Verzeichnissen anzeigen
 
Zur Rekursion gibt es genug Beispiel und Tutorials. Das sollte eigentlich reichen. Und wen du konkreten Code hast, kann man immer noch mal nachfragen.

Jim Carrey 28. Sep 2016 22:36

AW: ListBox-/View mit Dateien und Verzeichnissen anzeigen
 
Ich habe mittlerweile alles durch. Mein letzter Code war dieser hier https://www.devexpress.com/Support/C...n/Details/A973
Keiner funktioniert. Es ist ja nicht so, dass ich nicht suche, so einer bin ich nicht, aber es funktioniert halt absolut nichts.

Luckie 28. Sep 2016 22:42

AW: ListBox-/View mit Dateien und Verzeichnissen anzeigen
 
Und wie sollen wir dir jetzt helfen? Kein Code von dir und nur die Aussage das irgendeinanderer Code nicht "funktioniert".

Jim Carrey 28. Sep 2016 22:44

AW: ListBox-/View mit Dateien und Verzeichnissen anzeigen
 
Ich weiß einfach nicht, wie man durch alle Nodes geht das ist alles.

Luckie 28. Sep 2016 22:45

AW: ListBox-/View mit Dateien und Verzeichnissen anzeigen
 
Dann zeig doch mal deinen bisherigen rekursiven Code, was du bisher hast und was wo nicht funktioniert. Wie sollen wir dir sonst helfen?:roll:

Jim Carrey 28. Sep 2016 22:50

AW: ListBox-/View mit Dateien und Verzeichnissen anzeigen
 
Mein aktueller Code ist

Delphi-Quellcode:
Node := GtroCheckShellTreeView1.Items[0].getFirstChild;
while Node <> nil do
 begin
  // Pruefen, ob aktueller Node im Memo steht. Wenn ja, Node anchecken
  if Memo1.Lines.IndexOf(Node.Parent.Text + '\' + Node.Text) > -1 then
   GtroCheckShellTreeView1.SetNodeChecked(Node, True);
 
  Node := Node.GetNext;
 end;

Luckie 28. Sep 2016 22:51

AW: ListBox-/View mit Dateien und Verzeichnissen anzeigen
 
Du hast doch gerade einen Link zu einem rekursiven Code gepostet, um einen Treeview durchzugehen und gesagt, der funktioniert nicht. Jetzt zeig den doch mal wie der bei dir aussieht und was wo nicht funktioniert.

Jim Carrey 28. Sep 2016 22:54

AW: ListBox-/View mit Dateien und Verzeichnissen anzeigen
 
Den hab ich schon längst wieder gelöscht.
Aber da wo jetzt Node := Node.GetNext; steht stand vorher ein Check, ob der aktuelle Node Children hat und wenn ja, wurde ProcessChildren aufgerufen.

Es fängt schon damit an, dass IrgendeinNode.Count immer 0 ist. Es funktionierte vorne und hinten nicht.

Luckie 28. Sep 2016 22:58

AW: ListBox-/View mit Dateien und Verzeichnissen anzeigen
 
Also ohne konkreten Code von dir, ist keine Hilfe möglich. Wir können auch nur den schon verlinkten Code posten.

Jim Carrey 29. Sep 2016 10:52

AW: ListBox-/View mit Dateien und Verzeichnissen anzeigen
 
Ich habe das jetzt noch einmal neu gemacht und es sieht jetzt so aus

Delphi-Quellcode:
function GetNodePath(aNode: TTreeNode; aDelimiter: String = ''): String;
begin
 Result := '';

 while Assigned(aNode) do
  begin
   Result := aDelimiter + aNode.Text + Result;
   aNode := aNode.Parent;
  end;

 if Result[1] = '\' then
  Delete(Result, 1, 1);

 if Result = '' then
  Delete(Result, 1, 1);
end;

procedure TForm11.Button4Click(Sender: TObject);
 procedure ProcessChildren(aNode: TTreeNode; Recurse: Boolean);
 var
  i: Integer;
  s: String;
 begin
  for i := 0 to aNode.Count - 1 do
   begin
    s := GetNodePath(aNode, '\') + '\';
    s := aSharedProcs.StringReplaceEx(s + aNode[i].Text, GtroCheckShellTreeView1.Items[0].Text, '');

    if Form11.Memo1.Lines.IndexOf(s) > -1 then
     begin
      GtroCheckShellTreeView1.Items[i].Expand(True); // PROBLEM

      GtroCheckShellTreeView1.SetNodeChecked(aNode[i], True);
     end;

    if Recurse and aNode[i].HasChildren then
     ProcessChildren(aNode[i], Recurse);
   end;
 end;

var
 i, j: Integer;
 s: String;
 Node: TTreeNode;
begin

  for j := 0 to GtroCheckShellTreeView1.Items[0].Count do
   begin
    Node := GtroCheckShellTreeView1.Items[j];

    s := aSharedProcs.StringReplaceEx(Node.Text, GtroCheckShellTreeView1.Items[0].Text, '');
   
    if Form11.Memo1.Lines.IndexOf(s) > -1 then
     begin
      Node.Expand(True);
      GtroCheckShellTreeView1.SetNodeChecked(Node, True);
     end;

    ProcessChildren(Node, True);
  end;
end;
Er geht jetzt tatsächlich durch alle Knoten und checkt auch genau die Knoten, die im Memo1 drin stehen.

Es gibt jetzt nur noch ein Problem an der Stelle // PROBLEM.
Es sollen nur die Knoten expandiert werden, wo auch Unterknoten checked sind.
Das bekomme ich leider nicht hin :(

Sowei ich weiß muss erst einmal alles expandiert werden, damit überhaupt etwas angecheckt werden kann. Denn was nicht sichtbar ist, kann nicht angecheckt werden.


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

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