Einzelnen Beitrag anzeigen

mimi

Registriert seit: 1. Dez 2002
Ort: Oldenburg(Oldenburg)
2.008 Beiträge
 
FreePascal / Lazarus
 
#1

Order + Dateien in einer VirtualTreeView anzeigen

  Alt 18. Okt 2006, 12:56
Hallo,
ich habe da ein großes problem. ich möchte gerne das meine findfirst funktion folgendes macht:
Sie soll alle Verzeichnise auflisten wo die entsprechenden endungen drin sind und alle dateien auf listen die die enstrpechenden endungen haben. zuzätlich möchte ich gerne das bestimmte dateien geladen werden in die treeview also als verzeichnis behandelt werden.
ich hoffe ihr habe das was ich möchte verstanden. hier ein kleines beispiel wie ich es mir vorstelle:
Delphi-Quellcode:
verzeichnis1
  Dateien.mp3
  playliste.m3u
    inhaltderplayliste
  weitere dateien.m4a
also root soll das suchverzeichnis eingefügt werden.
ich hatte es schon hinbekommen mit verzeichnise und dateien aber dann wollte ich noch die playlisten laden und das ging überhaupt nicht.

ich suche schon seit tagen nach möglichkeiten habe mir viele findfirst beispiele angeschaut aber ich komme einfach nicht auf den grünen pfad, hier ist mein code der leider alles im in einer ebene anzeigt:
Delphi-Quellcode:
procedure TPlaylisten.LoadDir(dir:String; var t:Boolean);
var
  SearchRec: TSearchRec;
  DirTemp: String;
begin
  if (Assigned(onPlaylisteAdd)) and (GetFilesInDirectory(dir+'\',stdext,true)) then
    onPlaylisteAdd(dir,GetPrvDir(dir));

  if dir[Length(dir)] <> '\then dir := dir + '\';
  if FindFirst(dir + '*.*', faDirectory, SearchRec) = 0 then begin
    repeat
      if (SearchRec.Attr and faDirectory = faDirectory) and (SearchRec.Name[1] <> '.') then begin
        if (SearchRec.Attr and faDirectory > 0)and (GetFilesInDirectory(dir+SearchRec.Name+'\',stdext,true)) then begin
          if Assigned(onplaylistnewadd) then onplaylistnewadd(1);
          DirTemp :=dir;
          dir:=dir + SearchRec.name;
          t:=True;
          LoadDir(dir,t);
          dir := DirTemp;
        end;
      end
      else begin
        if (SearchRec.Name[1] <> '.') and (Assigned(onadditem) and (Pos(uppercase(ExtractFileExt(SearchRec.name)),stdext) >0)) {and (pos(uppercase(ExtractFileExt(searchrec.name)),playlistext) > 0)} then
          onAddItem(dir+SearchRec.Name,SearchRec.Name);
        end;

        if SearchRec.Name[1] <> '.then begin
          if (Assigned(onPlaylisteAdd)) and (pos(uppercase(ExtractFileExt(searchRec.name)),playlistext) > 0) then begin
            t:=False;
            DirTemp :=dir;
            dir:=dir + SearchRec.name;
            LoadFile(dir,nil,True);
            dir := DirTemp;
          end
      // else begin

        end;
    until FindNext(SearchRec) <> 0;
    FindClose(SearchRec);
  end;
  if Assigned(onPlaylistNewAdd) then onPlaylistNewAdd(2);
end;

// hier sind die ereignise
// Setzt den Hauptkonoten eines Eintrages
procedure TForm2.PlaylistNewAdd(t:Integer);
begin
  if t = 0 then parent:=VT.NodeParent[parent];
  if t = 1 then begin backupparent:=parent; parent:=VT.NodeParent[parent] end;
  if t = 2 then parent:=backupparent;

end; // PlaylistNewAdd

procedure TForm2.PlaylisteAdd(FileName:TFileName; Alias:String);
var
  item:TPlaylistItem1;
begin
  VT.NodeDataSize:=SizeOf(Titem);
  item:=TPlaylistItem1.Create;
  item.alias:=alias;item.FileName:=FileName;
  parent:=AddVSTObject(vt,parent,item);
end; // PlaylisteAdd

procedure Tform2.AddItem(FileName:TFileName; Alias:String);
var
  item:TPlaylistItem1;
begin
  if parent <> nil then begin
    VT.NodeDataSize:=SizeOf(Titem);
    item:=TPlaylistItem1.Create;
    item.alias:=alias;item.FileName:=FileName;
    AddVSTObject(vt,parent,item);
  end;
end;// AddItem

und hier die zuweisungen:
procedure TForm2.FormCreate(Sender: TObject);
begin
  backupparent:=NIL;
  // wird ausgelöst sobalt ein eintrag zur liste hinzugefügt wird
  Form1.Playlisten.onAddItem:=AddItem;
  // wird ausgelöst wenn eine playliste geladen wird
  Form1.Playlisten.onPlaylisteAdd:=PlaylisteAdd;
  // wird ausgefürt wenn eine Neue playliste geladen werden soll
  Form1.Playlisten.onPlaylistNewAdd:=PlaylistNewAdd;
  // Wird auslöst sobalt nach neuen playlisttypen gesucht wird
  Form1.Playlisten.onAddPlaylistTyp:=AddPlaylistTyp;
end;
die ereignise sind für mich wichtig weil ich hätte das ganze gerne universal !

vielen dank im vorraus für tipps bzw. vorschläge !
Michael Springwald
MFG
Michael Springwald,
Bitte nur Deutsche Links angeben Danke (benutzte überwiegend Lazarus)
  Mit Zitat antworten Zitat