Moin Tommy,
wie sieht denn dein Filter aus? Der Code ist soweit ganz in Ordnung, allerdings behandelt er nur einen Spezialfall (einzelne Maske, match nur für extension, kein wildchar in ext erlaubt). Denke daran, dass ZIP-Dateien wie Folder behandelt werden.
Wenn du so weitermachen willst, dann ersetze "CompareText() = 0" noch durch "SameText()" - zu den originellen Komponentenbezeichnern schreibe ich jetzt mal nichts.
Hier eine universelle Lösung:
Delphi-Quellcode:
const
shlwapi = 'SHLWAPI.DLL';
function PathMatchSpec(pszFileParam, pszSpec: PAnsiChar): BOOL;
stdcall external shlwapi name 'PathMatchSpecA';
function PathMatchSpecs(const fn: TFileName; const mask: string): Boolean;
var
s: TStrings;
ok: Boolean;
i: Integer;
begin
ok := False;
with TStringList.Create do
try
Delimiter := ';';
DelimitedText := mask;
for i := 0 to Pred(Count) do
begin
ok := ok or PathMatchSpec(PChar(fn), PChar(Strings[i]));
if ok then
Break;
end;
finally
Free;
end;
Result := ok;
end;
procedure TDemoForm.ShellTreeViewAddFolder(Sender: TObject;
AFolder: TShellFolder; var CanAdd: Boolean);
begin
CanAdd := AFolder.IsFolder or PathMatchSpecs(AFolder.DisplayName, FilterComboBox.Mask);
end;
Grüße vom marabu