这是我的代码,我把一个文本文件显示在listview里,可是显示结果总莫名其妙?
procedure TForm1.Button1Click(Sender: TObject);
begin
  ListView1.ownerdata:= true;
  if OpenDialog1.Execute then
  begin
    AssignFile(F1, OpenDialog1.Filename);
    Reset(F1);
  end;
  ListView1.Items.BeginUpdate;
  ListView1.Items.Count:= 2;
  ListView1.Items.EndUpdate;
  Closefile(F1);
end;procedure TForm1.ListView1Data(Sender: TObject; Item: TListItem);
  var
  substr : string;
  
begin
  if item.Index > 1 then exit;
  if not eof(F1) then
  begin
  readln(F1, substr);
  item.Caption := substr;
  end;
end;请问我错在哪里了??我弄不懂ondata事件的工作原理。我用断点观察,它的执行顺序也让我弄不懂?
谁来帮帮我????

解决方案 »

  1.   

    1、Closefile(F1);在Button1Click中执行是不对的,因为这就造成ListView1Data不能读取数据。
    2、ListView.OnData事件是在ListView需要重新显示任何节点时都要激发的。所以当第一次完成OnData事件后,文件中指针到了末尾(即eof = true),那么下次激发OnData时就没有数据可以显示了,因为你有条件:if not eof(F1) then。这时候所有的节点将不会显示任何数据。—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  2.   

    网上有大量的代码可以参考的
    还有组件VirtualTreeView的,有实例,最重要是会自己去找(Google上多的不得了)
      

  3.   

    再请问: 我该在哪儿写 closefile(F1); 呢????
      

  4.   

    那要看你的需要,如可以写在TForm1.OnDestroy中。—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  5.   

    如果我想多次点击Button, 去打开某些文件。那么在第一次打开文件(Reset(F1))过后,应该Closefile(F1),要不它就一直显示第一个文件的内容。于是我就在buttonclick事件的最开始写Closefile, 可是就会报错??那我该怎么办呢?
      

  6.   

    那就将Button1Click中的:
    Closefile(F1);
    移动到
    ListView1.ownerdata:= true;
    前面。
    并在Closefile(F1);
    前面加上:
    {$I-}—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————
      

  7.   

    哦,我总算理解了Virtual ListView不自己保存数据的含义了!!!这让人觉得很讨厌。它在显示海量数据时的确很快。但是如果我想修改ListView某几行的内容时,它的问题又来了,我不得不想办法去保存修改的内容,如果我要修改10000行,那我不是要用10000个变量???唉,怎么办,命苦啊
      

  8.   

    这样的话,只能在Delphi里去修改原文件。还有别的办法吗?
      

  9.   

    如果是那样,你就根本没有必要使用Virtual ListView。Virtual ListView之所以看起来效率很高,是因为它的数据不会刷新,所以你动一动它,原来显示的数据就没有了。
    我命也苦,你这么久还不结贴:)—————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    —————————————————————————————————