Rob*_*edy 15
您的问题有多个部分.我会在这里提供一个概述.如果您需要任何特定步骤的帮助,请发布更具体的后续问题.
确定"编译程序所在的位置"是指什么.
要获取EXE文件的完整路径,请致电ParamStr(0).要从该字符串中删除EXE文件名,所以只有目录部分,请调用ExtractFilePath.确保以反斜杠(IncludeTrailingPathDelimiter)结尾,然后附加"Files"目录.
获取文件列表.
使用FindFirst和FindNext创建一个查看所有文件的循环.名称将包括"." 和".."相对目录名称,因此您可能希望排除它们.请注意,文件不按任何特定顺序枚举.例如,如果您需要按字母顺序排序,则需要自己完成.(在测试中,它们可能看起来按字母顺序排列,但并非总是如此.)
var
Rec: TSearchRec;
begin
if FindFirst(path + '\*', faAnyFile, Rec) = 0 then try
repeat
if (Rec.Name = '.') or (Rec.Name = '..') then
continue;
if (Rec.Attr and faVolumeID) = faVolumeID then
continue; // nothing useful to do with volume IDs
if (Rec.Attr and faHidden) = faHidden then
continue; // honor the OS "hidden" setting
if (Rec.Attr and faDirectory) = faDirectory then
; // This is a directory. Might want to do something special.
DoSomethingWithFile(Rec.Name);
until FindNext(Rec) <> 0;
finally
SysUtils.FindClose(Rec);
end;
end;
Run Code Online (Sandbox Code Playgroud)将节点添加到控件以表示文件.
您可能希望在DoSomethingWithFile我上面提到的假设函数中执行此操作.使用列表视图的Items属性对项目执行操作,例如添加新项目.
var
Item: TListItem;
begin
Item := ListView.Items.Add;
Item.Caption := FileName;
end;
Run Code Online (Sandbox Code Playgroud)
TListItem有额外的属性; 查看文档以获取详细信息.SubItems如果您在"报告"模式下显示列表视图,则该属性非常有用,其中单个节点可以有多个列.
将图像与项目相关联.
列表视图中的节点图像来自关联的图像列表,LargeImages和SmallImages.它们指的是TImageList表单上的一个或多个组件.将图标图像放在那里,然后将项目的ImageIndex属性分配给相应的数字.
根据您希望程序的详细程度,您可能希望使用Delphi的TShellListView控制而不是自己完成上述所有工作.