Delphi 控件ComboBox的问题

我想用COMBOBOX控件获取指定文件夹下的指定后缀名文件,例如文本文件,当新添加一个文本文件,下次启动程序,点下COMBOBOX下拉框,都能够全部显示指定文件夹下的所有... 我想用COMBOBOX控件获取指定文件夹下的指定后缀名文件,例如文本文件,当新添加一个文本文件,下次启动程序,点下COMBOBOX下拉框,都能够全部显示指定文件夹下的所有文本文件,或加多一个按钮刷新一下,就能全部显示出来.请问该如何实现,如何写代码.如果知道的请详细写出... 展开
 我来答
402407
2009-11-12 · TA获得超过771个赞
知道小有建树答主
回答量:726
采纳率:50%
帮助的人:904万
展开全部
其实主要就是个遍历文件夹操作。
{-------------------------------------------------------------------------------
过程名: MakeFileList 遍历文件夹及子文件夹
参数: Path,FileExt:string 1.需要遍历的目录 2.要遍历的文件扩展名
返回值: TStringList

Eg:ListBox1.Items:= MakeFileList( 'E:\指定的文件路径','.exe') ;
ListBox1.Items:= MakeFileList( 'D:\指定的文件路径','.*') ;
-------------------------------------------------------------------------------}
function MakeFileList(Path,FileExt:string):TStringList ;
var
sch:TSearchrec;
begin
Result:=TStringlist.Create;

if rightStr(trim(Path), 1) <> '\' then
Path := trim(Path) + '\'
else
Path := trim(Path);

if not DirectoryExists(Path) then
begin
Result.Clear;
exit;
end;

if FindFirst(Path + '*', faAnyfile, sch) = 0 then
begin
repeat
Application.ProcessMessages;
if ((sch.Name = '.') or (sch.Name = '..')) then Continue;
if DirectoryExists(Path+sch.Name) then
begin
Result.AddStrings(MakeFileList(Path+sch.Name,FileExt));
end
else
begin
if (UpperCase(extractfileext(Path+sch.Name)) = UpperCase(FileExt)) or (FileExt='.*') then
Result.Add(Path+sch.Name);
end;
until FindNext(sch) <> 0;
SysUtils.FindClose(sch);
end;
end;

首先你是要把符合条件的文件列放到哪呢?列表框或者文本中?不管怎么样都要用到字符串列表,ComboBox.items.add('.txt')可以添加 后缀,好像是items吧,具体你可以用ctrl+空格或者ctrl+鼠标左键 看看里面的方法,添加了想要的下拉内容后,选择了这个后缀,然后你点击某个键,将你的想要查询的文件夹路径 ,combobox.text 当作参数传给那个函数,结果保存在先前申请的字符串列表中,再后续操作吧
yyibetter
2009-11-23 · TA获得超过140个赞
知道小有建树答主
回答量:312
采纳率:0%
帮助的人:193万
展开全部
1楼回答已经很好的解决楼主问题了,
你那个刷新按钮只要在点击的时候先把ComboBox清空,再把1楼函数返回的结果显示到ComboBox中就可以了。

在Uses中多加一个单元StrUtils的引用

刷新按钮的全部代码改成这样:
procedure TForm1.Button4Click(Sender: TObject);
var
list: TStrings;
begin
chbU.Clear;
list := MakeFileList('e:\', '.*');
try
chbU.Items.Text := list.Text;
finally
list.Free;
end;
end;

再把: Result.AddStrings(MakeFileList(Path+sch.Name,FileExt));
这句注释掉,这样就符合你的要求了,
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式