我想打开对话框,然后选择多个文件赋给listbox试了半天都不行,怎么弄呢?
var
i:integer;
begin
if opendialog1.Execute then
for i:=0 to 100 do
listbox1.items.Strings[i]:=opendialog1.FileName ;
end;

解决方案 »

  1.   

    你好,為何不用listbox1.items.Add(opendialog1.FileName) ;
    謝謝。
      

  2.   

    可是显示的是重复的文件,怎么把不同的文件显示在listbox上??
      

  3.   

    你的错误不在于是否用
    listbox1.items.Add(opendialog1.FileName) ;
    listbox1.items.Strings[i]:=opendialog1.FileName ;
    这两个都没有问题。
    而在于你是在执行了一次opendialog1.execute之后就开始循环了,结果肯定是101行,行行都是相同的。
    for i:=0 to 100 do
    begin
       if opendialog1.Execute then
       listbox1.items.Strings[i]:=opendialog1.FileName ;
    end;
    这样一一放入才正确。不过这样的话会不停的要打开dialog,很麻烦。
    我不确定你是如何在opendialog中选择多个文件的,你是按shift?还是用鼠标框住你要的文件?
    好像一次只能选择一个呀。我没有很注意。
      

  4.   

    刚看了一下,原来是可以多选的哈,设置属性:ofAllowMultiSelect为true就可以。
    那兄弟你等等哈,我再去试试。
      

  5.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
      OpenDialog1.Options := [ofAllowMultiSelect, ofFileMustExist];
      if OpenDialog1.Execute then
        ListBox1.Items.Assign(OpenDialog1.Files);
    end;
    多选情况下要用属性 Files,这是一个TStrings属性,可以直接赋给ListBox1.Items 。