ja ich hatte nach findfirst + treeview gesucht aber nichts passendes gefunden dein code habe ich auch schongefunden woanders und mit anderen namen.
ich dachte das würde mich auf eine idee bringen wenn ich ihn mir ansehe und habe meine procedure leicht geändert:
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),True);
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;
onPlaylistNewAdd(2);
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
onPlaylistNewAdd(1);
t:=False;
DirTemp :=dir;
dir:=dir + SearchRec.name;
LoadFile(dir,nil,True);
onPlaylistNewAdd(2);
dir := DirTemp;
end
// else begin
end;
until FindNext(SearchRec) <> 0;
FindClose(SearchRec);
end;
if Assigned(onPlaylistNewAdd) then onPlaylistNewAdd(2);
procedure TForm2.PlaylistNewAdd(t:Integer);
begin
if t = 1 then backupparent:=GetParentNode(parent);
if t = 2 then parent:=backupparent;
end; // PlaylistNewAdd
procedure TForm2.PlaylisteAdd(FileName:TFileName; Alias:String;ok:Boolean);
var
item:TPlaylistItem1;
begin
if ok = True then begin
VT.NodeDataSize:=SizeOf(Titem);
item:=TPlaylistItem1.Create;
item.alias:=alias;item.FileName:=FileName;
parent:=AddVSTObject(vt,parent,item);
end;
end; // PlaylisteAdd
ich dachte wenn ich mir den parent sicherer und dann wieder zurück gebe müste es eigetnlich doch gehen und ich habe bei playlisteAdd ja noch eine variable hinzugefügt leider geht das aber trozdem immer noch nicht hier mal ein bild:
jetzt wird alle doppelt angezeigt aber leider werden keine verzeichnise mehr angezeigt !