AGB  ·  Datenschutz  ·  Impressum  







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

BaumStruktur in Treeview erstellen!

Ein Thema von Nillen · begonnen am 12. Jan 2006 · letzter Beitrag vom 12. Jan 2006
Antwort Antwort
Nillen

Registriert seit: 20. Dez 2004
27 Beiträge
 
#1

BaumStruktur in Treeview erstellen!

  Alt 12. Jan 2006, 13:53
Folgendes Problem :

Ich habe eine Datei, in der bsp. folgende Pfade stehen :

C:\Eigene Dateien\Eigene Dokumente\Proggen\a.html
C:\Eigene Dateien\Eigene Dokumente\Proggen\test\b.html
C:\Eigene Dateien\Eigene Dokumente\c.html

Nun soll folgende Baumstruktur entstehen :

-c:\
-Eigene Dateien
-Eigene Dokumente
c.html
-Proggen
a.html
-test
b.html

Sieht jetzt n bisschen komisch aus, aber im Grunde soll es halt aussehen wie im Windoof Explorer

Hat da jemand ne Idee ? Vielleicht sogar per Komponenteneigenschaften/methoden oder so ?

Danke schonmal

(ich sehe grade, dass man die Tabs nicht sieht, ich hoffe ihr könnt euch denken wie es aussehen soll)
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#2

Re: BaumStruktur in Treeview erstellen!

  Alt 12. Jan 2006, 14:06
Welche Delphi-Version verwendest du denn?

zumindest ab D7 gibt's die Komponente TShellTreeView.

mit diesem Code kannst du alle Dateien/Verzeichnisse in einem Verzeichniss ermitteln:
Delphi-Quellcode:
function dirup(s:string):string;
begin
  try
    if s[length(s)]='\then result:=s else result:=s+'\'
  except
    result:=s;
  end;
end;

procedure getdirsindir(const verzeichniss:string;var dirs:tstringlist);
var
  sd:string;
  s:tsearchrec;
  i:integer;
begin
  dirs:=tstringlist.Create;
  sd:=dirup(verzeichniss);
  if findfirst(sd+'*.*',faanyfile,s)<>0 then begin
    sysutils.findclose(s);
    exit;
  end;
  dirs.add(s.Name);
  while findnext(s)=0 do
    dirs.Add(s.name);
  i:=0;
  while i<dirs.count do begin
    if ((dirs[i]='..') or (dirs[i]='.')) then begin
      dirs.Delete(i);
      i:=i-1;
    end else
      if not directoryexists(sd+dirs[i]) then begin
        dirs.Delete(i);
        i:=i-1;
      end;
    inc(i);
  end;
  sysutils.findclose(s);
end;

function getfilesindir(const verzeichniss,filter:string;var files:tstringlist):extended;
var
  sd:string;
  s:tsearchrec;
  i:integer;
  e:extended;
  flt:string;
begin
  if filter='then
    flt:='*.*'
  else
    flt:=filter;
  e:=0;
  sd:=dirup(verzeichniss);
  result:=0;
  files:=tstringlist.Create;
  if findfirst(sd+flt,faanyfile,s)<>0 then begin
    sysutils.findclose(s);
    exit;
  end;
  files.add(s.Name);
  while findnext(s)=0 do begin
    files.Add(s.name);
    e:=e+s.Size;
  end;
  i:=0;
  while i<files.count do begin
    if ((files[i]='..') or (files[i]='.')) then begin
      files.Delete(i);
      i:=i-1;
    end else
      if directoryexists(sd+files[i]) then begin
        files.Delete(i);
        i:=i-1;
      end;
    inc(i);
  end;
  result:=e;
  sysutils.findclose(s);
end;

function gettreeindir(const root:string;var files,dirs:tstringlist;filter:string):extended;
var
  sd:string;
  i,j:integer;
  fls,unterverzeichnisse:tstringlist;
  flt:string;
  groesse:extended;
begin
  groesse:=0;
  if filter='then
    flt:='*.*'
  else
    flt:=filter;
  sd:=dirup(root);
  files:=tstringlist.Create;
  dirs:=tstringlist.Create;
  dirs.Add(sd);
  i:=0;
  while i<dirs.Count do begin
    getdirsindir(dirs[i],unterverzeichnisse);
    for j:=0 to unterverzeichnisse.Count-1 do
      dirs.Add(dirup(dirs[i])+unterverzeichnisse.Strings[j]);
    inc(i);
  end;
  for i:=0 to dirs.Count-1 do begin
    groesse:=groesse+getfilesindir(dirs[i],flt,fls);
    for j:=0 to fls.Count-1 do
      files.Add(dirup(dirs[i])+fls.strings[j]);
  end;
  result:=groesse;
end;
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Nillen

Registriert seit: 20. Dez 2004
27 Beiträge
 
#3

Re: BaumStruktur in Treeview erstellen!

  Alt 12. Jan 2006, 14:11
Ich hab Vesrion 7! Unter was finde ich diese Komponente ?

Ok, hab sie, jetzt nur noch rausfinden wie es geht

Wenn du lust hast kannst mir ja ne kleine Instruction geben
  Mit Zitat antworten Zitat
Nillen

Registriert seit: 20. Dez 2004
27 Beiträge
 
#4

Re: BaumStruktur in Treeview erstellen!

  Alt 12. Jan 2006, 14:20
Mh, vielleicht habe ich auch mein Problem falsch beschrieben ...
ich möchte wirklich nur die Dateien in der Treeview angezeigt bekommen, die auch in
der Datei stehen ...
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#5

Re: BaumStruktur in Treeview erstellen!

  Alt 12. Jan 2006, 14:22
Zitat von Nillen:
Mh, vielleicht habe ich auch mein Problem falsch beschrieben ...
ich möchte wirklich nur die Dateien in der Treeview angezeigt bekommen, die auch in
der Datei stehen ...
und was macht die shelltreeview falsch?
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Nillen

Registriert seit: 20. Dez 2004
27 Beiträge
 
#6

Re: BaumStruktur in Treeview erstellen!

  Alt 12. Jan 2006, 14:30
Ich bin mir nicht sicher was TShellTreeview kann!
Nur dein Quellcode verwirrt mich enorm...
Als ich diesen Eintrag gemacht habe, habe ich gehofft, dass mir ev. jemand
eine Komponente und ein paar Methoden vorschlägt, mit denen man etwas anfangen kann ...
  Mit Zitat antworten Zitat
Benutzerbild von Lannes
Lannes

Registriert seit: 30. Jan 2005
Ort: Münster
745 Beiträge
 
Delphi 3 Professional
 
#7

Re: BaumStruktur in Treeview erstellen!

  Alt 12. Jan 2006, 18:48
Hallo,
Zitat von Nillen:
Mh, vielleicht habe ich auch mein Problem falsch beschrieben ...
ich möchte wirklich nur die Dateien in der Treeview angezeigt bekommen, die auch in
der Datei stehen ...
In der Code-Library gibt es etwas für Dich:
TTreeView-Node-Bäume schnell anlegen
Wenn Du in der Funktion den Separator entsprechend eingibst, passt das.

Ich hab den Tipp mal getestet, da fehlte irgendwo ein begin oder end im Code,
kann mich aber daran erinnern das der Fehler schnell zu finden war.
Kann aber auch sein das der Fehler im dem Code schon behoben ist.
MfG Lannes
(Nichts ist nicht Nichts) and ('' <> nil ) and (Pointer('') = nil ) and (@('') <> nil )
  Mit Zitat antworten Zitat
Antwort Antwort


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 11: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