如何将TShellListView项过滤到特定的文件扩展名?

时间:2013-03-10 05:13:44

标签: delphi delphi-7

我正在开发一个需要ShellListView1的Delphi 7项目,所以只显示.PNG或.JPG文件。

如何仅查看文件夹和特定文件类型(例如:' .exe; .bat')?

我被告知是一个带有屏蔽的ShellListView1组件,但我尝试的网站是离线的。

2 个答案:

答案 0 :(得分:5)

您可以为OnAddFolder事件编写处理程序,只要项目要添加到列表中,该事件就会触发。以下代码仅允许在列表中添加*.exe*.bat扩展名的文件:

procedure TForm1.ShellListView1AddFolder(Sender: TObject;
  AFolder: TShellFolder; var CanAdd: Boolean);
var
  FileExt: string;
begin
  CanAdd := not AFolder.IsFolder;
  if CanAdd then
  begin
    FileExt := ExtractFileExt(AFolder.PathName);
    CanAdd := (FileExt = '.exe') or (FileExt = '.bat');
  end;
end;

答案 1 :(得分:1)

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

function MatchesMask()返回True是一个字符串值,与掩码指定的格式相匹配。

语法上有效的Mask由文字字符,集合和通配符组成。 通配符是星号(*)或问号(?)。星号与任意数量的字符匹配。问号与单个任意字符匹配。