如何过滤TShellListView项目到特定的文件扩展名?
问题描述:
我正在使用Delphi 7的一个项目,需要ShellListView1,所以只显示.PNG或.JPG文件。如何过滤TShellListView项目到特定的文件扩展名?
如何查看仅文件夹和特定文件类型(例如:'.exe; .bat')?
我被告知是一个带屏蔽的ShellListView1组件,但我尝试的网站处于脱机状态。
答
您可以为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;
答
uses Masks;
...
procedure TForm1.ShellListView1AddFolder(Sender: TObject;
AFolder: TShellFolder; var CanAdd: Boolean);
begin
CanAdd := AFolder.IsFolder or MatchesMask(AFolder.PathName, '*.exe');
end;
功能MatchesMask()回报真正是一个字符串值由面具specifed的格式相匹配。
句法有效掩码由文字字符,集合和通配符组成。 通配符是星号(*)或问号(?)。星号匹配任意数量的字符。问号与单个任意字符匹配。