2012-11-09 33 views
1

我想知道如何通过编辑组件搜索Filelistbox中的字符串。 Filelistbox的内容大约是100个txt文件。我有一个解决方案,但我想将结果添加到Filelistbox,而不是Listbox。任何想法?而且我必须使用Listbox1还是可以以某种方式制作它?感谢您的帮助和对我的工作:)对不起!通过编辑组件搜索FileListbox

procedure TForm1.Edit1Change(Sender: TObject); 
begin 
    If Edit1.Text = EmptyStr then 
    ListBox1.Items := FileListBox1.Items 
    else 
    begin 
    ListBox1.Clear; 
    For I := 0 To Pred(FileListBox1.Items.Count) do 
    begin 
     If AnsiPos(Edit1.Text, FileListBox1.Items[I]) <> 0 then 
     begin 
     ListBox1.Items.Add(FileListBox1.Items[I]); 
     end; 
    end; 
    end; 
end; 
+0

'TFileListBox'是一个列出文件夹中的文件的Windows 3.1兼容控件(非常过时)。要向其中添加项目,请将文件添加到该文件夹​​;没有办法将项目添加到'TFileListBox'。 (反正你不应该使用'TFileListBox',IMO;它会让你的应用程序看起来非常过时和不专业,我认为他们应该在十年前从VCL中删除它,TDirectoryListBox和TDriveComboBox;它们只是现在与Delphi 1向后兼容。) –

+0

您需要将数据保存在单独的列表中,该列表应该是“TStringList”。然后使用编辑框作为过滤器,每次编辑框发生变化时,都要更新文件列表框。正如肯说的,停止使用文件列表框。您可以使用普通列表框来显示已过滤的列表。或者'TListView'。使用'IOUtils'来填充你的文件列表。 –

+0

它是一个简单的程序,我只需要txt文件。好吧,但我怎么能改变这个代码? – Steve88

回答

3

您大概可以利用内置的Mask属性。我猜像下面会过滤文件如你所期望:

procedure TForm1.Edit1Change(Sender: TObject); 
begin 
    FileListBox1.Mask := '*' + Edit1.Text + '*'; 
end; 

参考documentation如何面具作品。

+0

我想在Filelistbox中列出结果而不是列表框。 – Steve88

+0

@Steve - 这就是这个答案所做的,在这个答案中没有引用列表框。 –

+1

感谢您的帮助!!它的作品 – Steve88