Ich habe selber einen OpdenDialog programmiert...
Wenn ich auf ein TShellTreeView einen Ordner auswähle soll er alle *.mp3/*.wav und Ordner in diesem Ordner anzeigen (im DataView = TListView)!
Das ist die Suchenprozedur:
Delphi-Quellcode:
procedure TfrmOp.FolderShellTreeViewChange(Sender: TObject;
Node: TTreeNode);
var
sr : TSearchRec;
Ext : string;
begin
DataView.Clear;
label1.Caption := FolderShellTreeView.Path;
// Find Directorys
if FindFirst(FolderShellTreeView.Path, faDirectory, sr) = 0 then begin
repeat
Application.ProcessMessages;
with DataView.Items.Add do begin
ImageIndex := 0;
Caption := sr.Name;
end;
until FindNext(SR) <> 0;
end;
// Find MusicFiles
if FindFirst(FolderShellTreeView.Path, faAnyFile, sr) = 0 then begin
repeat
Application.ProcessMessages;
Ext := ExtractFileExt(sr.Name);
if (Ext = '.mp3') or (Ext = '.wav') then
with DataView.Items.Add do begin
ImageIndex := 1;
Caption := sr.Name;
end;
until FindNext(SR) <> 0;
end;
end;
Allerdings zeigt er nur den aktuell markierten Ordner an.
Und wenn es z.B. so aussieht:
Code:
- [O] Meine Musik
- - [D] M1.mp3
- - [D] M2.mp3
- - [D] Windows_ShutDown.wav
- - [O] Alte Musik
Und ich auf "Alte Musik" klicke, zeigt er nicht, wie ich erwartet hätte auch noch die Musikdateien an, sondern nur "Alte Musik"!
([O] = Ordner und [D] = Datei)