我建好了一个Frame,里面有个listview.
然后在主窗体中动态调用:var
 Frame1 :Tframe;
begin
Frame1:= f_listview1.TFrame1.Create(self);
Frame1.Parent:=self;
Frame1.Top :=100;其中f_listview1就是我创建的FRAME窗体,在主窗体中调用成功。
现在有两个问题:
1、如何判断调用的实例已经存在从而在再次调用前将其FREE?用if Frame1:=nil无法判断。
2、调用后我的目的是让里面的listview读数据库内容,那么这个读的过程是在哪里进行?如果是在FRAME窗口中,那么应该是什么事件?而在主窗体里好象无法访问里面的listview控件(因为是动态生成)

解决方案 »

  1.   

    1.
      就用这个判断是可以的啊
      if Frame1=nil then
       begin
          Delete Frame1;
          Frame1 = nil;
       end
    2.
       在Frame1的构造函数里面完成
      

  2.   

    先寫一自定議事件﹐比如﹕ONClick.
    生成listview時﹕listview.onclick:=ONClick;
    if Frame1=nil then
       begin
          Delete Frame1;
          Frame1 = nil;
       end
      

  3.   

    1."if Frame1:=nil无法判断"当然无法判断,因为“:=”不是比较运算符
    2.你在设计Frame的时候,已知那个listView是动态创建的,你想要在别的地方访问那个listview,你可以将listview声明在public域中。事件问题,设计时的类可以直接在Object Inspector中编辑。动态创建的,只需要设置OnXXXX属性
      

  4.   

    谢谢各位!
    但是,当我点击主窗口的按钮调用FRAME后,此时FRAME里的LISTVIEW就要显示数据了(读数据库),因此没有用到ONClick等事件啊!而我在主窗口的按钮里是无法直接访问到FRAME里的 LISTVIEW的呀。