AGB  ·  Datenschutz  ·  Impressum  







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

TreeView und ListView

Ein Thema von Malte Koch · begonnen am 11. Sep 2007 · letzter Beitrag vom 13. Sep 2007
Antwort Antwort
Seite 2 von 4     12 34      
SMALLID

Registriert seit: 10. Aug 2004
78 Beiträge
 
#11

Re: TreeView und ListView

  Alt 11. Sep 2007, 14:33
Wie Andreas schon sagt ist der eleganteste Weg einfach das Design (+/-, etc.) der schon vorhandenen Komponenten zu ändern.

Wenn es mit ShellCtrl nicht klappt kannst du mit FindFirst, FindNext, etc. arbeiten. Dort kannst du nämlich auch gleich angeben, ob du Ordner includen willst oder nicht.

Bsp.-Quellcode zum Selbststudium:

Delphi-Quellcode:
var
  SearchRec: TSearchRec;
procedure TForm1.SearchClick(Sender: TObject);
begin
  FindFirst('c:\Program Files\MyProgram\bin\

*.*
', faAnyFile, SearchRec);
  Label1.Caption := SearchRec.Name + ' is ' + IntToStr(SearchRec.Size) + " bytes in size';
end;
procedure TForm1.AgainClick(Sender: TObject);
begin
if FindNext(SearchRec) = 0 then
Label1.Caption := SearchRec.Name +
is ' + IntToStr(SearchRec.Size) + ' bytes in size'
else
FindClose(SearchRec);
end;
Wenn du in der Hilfe mal nach "Dateien" suchst und den Filter auf DevStudio für Win32 setzt, danna auf "Methoden zur Ein-/Ausgabe" klickst und noch ein bissl rumsuchst, findest du eine ganze Anleitung dazu.

Ansonsten wie gesagt die schon vorhandenen Komponenten anpassen. Und bei Fragen nochmal posten
Muh
  Mit Zitat antworten Zitat
Malte Koch

Registriert seit: 11. Sep 2007
Ort: Recklinghausen
15 Beiträge
 
Delphi 2007 Professional
 
#12

Re: TreeView und ListView

  Alt 11. Sep 2007, 14:43
Hier ist die Prozedur die die Verzeichnisse ausliest. Jetzt ist die Frage, ob ich hier auch die Dateien schon suche oder ob ich dafür ne eigene Prozedur schreibe, die nur beim Klick auf den ausgegebenen Ordner ausgeführt wird.

Delphi-Quellcode:
procedure TForm2.HoleVerzeichnisse(const Pfad: String; var Tree: TTreeView;var ListView: TListView; Start: TTreeNode);
var
 SR: TSearchRec;

  begin
    if FindFirst(Pfad + '\*.*', faAnyFile, SR) = 0 then
  repeat
    Application.ProcessMessages;
    if (SR.Attr AND faDirectory = faDirectory) AND (SR.Name[1] <> '.')
        AND (SR.Name[1] <> '_') then
    begin
        baum := Tree.Items.Addchild(Start, SR.Name);
        baum.ImageIndex := 1;
        baum.StateIndex := 2;
        HoleVerzeichnisse(Pfad + '\' + SR.Name, Tree, ListView, Baum);
      end;
  until (FindNext(SR) <> 0);
  SysUtils.FindClose(SR);
  end;
  Mit Zitat antworten Zitat
SMALLID

Registriert seit: 10. Aug 2004
78 Beiträge
 
#13

Re: TreeView und ListView

  Alt 11. Sep 2007, 15:11
Du machst beim OnClik des treeviews eine Art "HoleDateien" mit den gleichen Parametern. Die schreibt dann die Elemente von "Pfad" (also dem aus dem Item und den Überitems zusammengesetzten String des TreeViews) wo (SR.Attr AND NOT faDirectory = faAnyFile) und schreibt die in den ListView.
Muh
  Mit Zitat antworten Zitat
Malte Koch

Registriert seit: 11. Sep 2007
Ort: Recklinghausen
15 Beiträge
 
Delphi 2007 Professional
 
#14

Re: TreeView und ListView

  Alt 11. Sep 2007, 15:30
1. Muss ich OnClick oder OnChange nehmen?

2. Wie komm ich in der Funktion an den Pfad dran? Also wie kann ich auslesen was ich angeklickt habe?
  Mit Zitat antworten Zitat
Malte Koch

Registriert seit: 11. Sep 2007
Ort: Recklinghausen
15 Beiträge
 
Delphi 2007 Professional
 
#15

Re: TreeView und ListView

  Alt 11. Sep 2007, 16:05
So sieht meine Prozedur bis jetzt aus. Jedoch weis ich nicht genau wie ich denn jetzt den Namen in das Item packe.

Ihr wisst was ich meine??

Delphi-Quellcode:
procedure TForm2.HoleDateien(const Pfad: String);
var
 SR: TSearchRec;
  begin
    if FindFirst(Pfad + '\*.*', faAnyFile, SR) = 0 then
  repeat
    Application.ProcessMessages;
    if (SR.Attr OR faAnyfile = faAnyFile) AND (SR.Name[1] <> '.')
        AND (SR.Name[1] <> '_') then
    begin
         ListView1.Items.Add ;
         ListItem.Caption := (SR.Name);

        baum.ImageIndex := 1;
        baum.StateIndex := 2;
        HoleDateien(Pfad);
      end;
  until (FindNext(SR) <> 0);
  SysUtils.FindClose(SR);
  end;
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#16

Re: TreeView und ListView

  Alt 11. Sep 2007, 16:32
Hier hab ich dir mal ein uraltes Beispiel das dir auch deine +/- Anzeigt vor den Eintraegen im Treeview!

Delphi-Quellcode:
procedure Verzeichnisse_Einlesen(Tree : TTreeView; Verzeichnis : String; Eintrag : TTreeNode; Mit_Dateien : Boolean);
Var
  SearchRec : TSearchRec;
  EintragTemp : TTreeNode;
  List : TStringList;
  Buf : String;
  I : Integer;
Begin
  Tree.Items.BeginUpdate;
  List:= TStringList.Create;
  If Verzeichnis[Length(Verzeichnis)] <> '\Then
  Begin
    Verzeichnis:= Verzeichnis + '\';
  End;
  If FindFirst(Verzeichnis + '*.*', faDirectory, SearchRec) = 0 Then
  Begin
    Repeat
      If (SearchRec.Attr And faDirectory = faDirectory) And (SearchRec.Name[1] <> '.') Then
      Begin
        //Eintrag ist ein Verzeichnis
        If (SearchRec.Attr And faDirectory > 0) Then
        Begin
          //zum aktuellen Eintrag hinzufügen
          Eintrag:= Tree.Items.AddChild(Eintrag, SearchRec.Name);
          EintragTemp:= Tree.Items.Add(Nil, Buf);
          EintragTemp.ImageIndex := 0; //Ummarkiert
          EintragTemp.SelectedIndex := 0; //Markiert
          EintragTemp.StateIndex := -1;
          //Eintrag merken
          EintragTemp:= Eintrag.Parent;
          //auf Untereinträge prüfen
          Verzeichnisse_Einlesen(Tree, Verzeichnis + SearchRec.Name, Eintrag, Mit_Dateien);
          //Eintrag wiederholen
          Eintrag:= EintragTemp;
        End
        Else
          //Eintrag ist eine Datei
          If Mit_Dateien Then
          Begin
            If (SearchRec.Name[1] <> '.') And (SearchRec.Name[1] <> '..') Then
            Begin
              Tree.Items.AddChild(Eintrag, SearchRec.Name);
              Eintrag:= Tree.Items.Add(Nil, SearchRec.Name);
              EintragTemp:= Tree.Items.Add(Nil, List.Strings[I]);
              EintragTemp.ImageIndex := 2; //Ummarkiert
              EintragTemp.SelectedIndex := 2; //Markiert
              EintragTemp.StateIndex := -1;
            End;
          End;
        End;
    Until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
  End;
  Tree.Items.EndUpdate;
End;

procedure TForm1.Button2Click(Sender: TObject);
begin
  TreeView1.Items.Clear;
  Verzeichnisse_Einlesen(TreeView1, Edit2.Text, Nil, False);
end;
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Malte Koch

Registriert seit: 11. Sep 2007
Ort: Recklinghausen
15 Beiträge
 
Delphi 2007 Professional
 
#17

Re: TreeView und ListView

  Alt 12. Sep 2007, 08:43
Ich hab es ja jetzt auch schon so, dass er mir das + und - anzeigt. Ich habe halt nur nen problem, dass er mir die Dateien aus den Ordnern in einem ListView anzeigt.
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#18

Re: TreeView und ListView

  Alt 12. Sep 2007, 09:18
Ich mache das immer so:

Delphi-Quellcode:
var MyItem: TListItem;

MyItem := ListView.Items.Add;
MyItem.ImageIndex := EinIndex;
MyItem.Caption := 'Inhalt der 1. Spalte';
MyItem.SubItems.Add('Inhalt der 2. Spalte');
MyItem.SubItems.Add('Inhalt der 3. Spalte');
  Mit Zitat antworten Zitat
Malte Koch

Registriert seit: 11. Sep 2007
Ort: Recklinghausen
15 Beiträge
 
Delphi 2007 Professional
 
#19

Re: TreeView und ListView

  Alt 12. Sep 2007, 15:49
Ich habe das jetzt hinbekommen.

Leider kann ich im moment nur die Dateien anzeigen die sich hinter dem ersten knoten verbergen.

Was muss ich denn ändern, damit der komplette Pfad mitübergeben wird?
  Mit Zitat antworten Zitat
Benutzerbild von Mackhack
Mackhack

Registriert seit: 29. Nov 2003
Ort: San Diego, CA/USA
1.446 Beiträge
 
Delphi 2006 Architect
 
#20

Re: TreeView und ListView

  Alt 12. Sep 2007, 16:24
Zitat von Malte Koch:
Ich habe das jetzt hinbekommen.

Leider kann ich im moment nur die Dateien anzeigen die sich hinter dem ersten knoten verbergen.

Was muss ich denn ändern, damit der komplette Pfad mitübergeben wird?
Zeig doch ein wenig Code dann kann man dir auch sagen warum du nur die Daten des ersten Knoten angezeigt bekommst!
Um etwas Neues zu schaffen muss man seine Ohren vor den Nein-sagern verschliessen um seinen Geist öffnen zu können.
(George Lukas)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


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 07:30 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