constructor TListViewEx.Create(CopyFrom: TListView);
begin
  inherited Create(nil);
  if assigned(CopyFrom) then begin
    self.Parent := CopyFrom.Parent;
    self.Left := CopyFrom.Left;
    self.Top := CopyFrom.Top;
    self.Width := CopyFrom.Width;
    self.Height := CopyFrom.Height;
//    self.Items.Assign( CopyFrom.Items );
    for i := 0 to CopyFrom.Items.Count - 1 do
      with self.Items.Add do begin
        Caption := CopyFrom.Items[i].Caption;
        StateIndex := CopyFrom.Items[i].StateIndex;
        Subitems.Assign( CopyFrom.Items[i].SubItems );
      end;
    s := CopyFrom.Name;
    CopyFrom.Free;
    self.Name := s;
  end;
end;procedure TForm1.FormCreate(Sender: TObject);
var i,j: integer;
begin
  TListViewEx.Create(self.ListView1);
end;
这样得不到在设计窗体时设置好的listview1的数据,有没有办法在FormCreate时得到listview的数据?

解决方案 »

  1.   

    FormCreate不行就在FormShow事件里做吧
      

  2.   

    我有点看不明白这句为什么要这样用 :TListViewEx.Create(self.ListView1); 求解释
      

  3.   

    在 FormShow 中调用出错
      

  4.   

    To: sailxia我对listview做了更改,我想用IDE的设计功能,但又不想注册自己的类(我想让代码复制到一个新环境中也能用delphi打开),于是出现了这个需求
      

  5.   

    正在考虑通过读取资源文件中的dfm并分析其中ItemData的数据来解决
      

  6.   

    没设置Visible属性,控件是不可见的,应该可以成功创建的!
      

  7.   

    用别的方法完成了,最终效果
    http://hi.baidu.com/liushx/album/item/4707c417a85e6544c83d6d4b.html