TShellListView i filtrowanie

0

Potrzebuję pomocy z TShellListView. Otóż piszę własne okienko otwórz/zapisz (to windowsowe jest zwyczajnie brzydkie), no i mam już komponenty poustawiane. Problem jest z filtrowaniem elementów. To znaczy mam ComboBox z typami plików, tylko nie wiem co zrobić, aby w polu shelllistview, dajmy na to nazywająca się pliki, ustawić, aby tylko się pokazywały pliki z określonym rozszerzeniem, np *.txt. Niestety TShellListView nie ma własności filter, extension, lub podobnej. Mógłby mi ktoś powiedzieć jak to można zrobić?

0

Żyje tu ktoś?

Może się nie wyraziłem jasno... chodzi o to, aby w TShellListView pokazywały się foldery i pliki określonego typu, np. txt

0

Za pomocą modułu Masks

uses Masks;

procedure TForm1.ShellListView1AddFolder(Sender: TObject;
  AFolder: TShellFolder; var CanAdd: Boolean);
begin
  CanAdd := AFolder.IsFolder or MatchesMask(AFolder.PathName, 'windows;*.txt');
end;

// Jeśli bez folderów
procedure TForm1.ShellListView1AddFolder(Sender: TObject;
  AFolder: TShellFolder; var CanAdd: Boolean);
begin
  CanAdd := MatchesMask(AFolder.PathName, '*.txt');
end;

Za pomocą modułu StrUtils

uses StrUtils;

procedure TForm1.ShellListView1AddFolder(Sender: TObject;
  AFolder: TShellFolder; var CanAdd: Boolean);
begin
   CanAdd := AFolder.IsFolder or (AnsiIndexText(ExtractFileExt(AFolder.PathName), ['.zip', '.rar']) >= 0);
end;
0

Dziękuję za pomoc. Mam jeszcze jedno pytanie: Co robi ciąg 'windows; w procedurze przy użyciu Masks?

0

W przypadku szukania folderów znajdzie katalog o nazwie "Windows" oraz pliki "TXT". Innych folderów nie powinno pokazać.

Po prostu deklarujesz filtr: FILTR1;FILTR2;FILTR3

0

Aha, to dzięki. Mam jeszcze jeden problem, ale to już założę nowy topic, bo to odbiega daleko od tematu filtrowania.

0

Witam,
Mam pytanie, jak w shelllisview umieścić swoje pliki *.jpg z podpisem?
W ListView daję radę.
Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1