比如
  with FrmMission do 
  begin
    tmpItem:=ListView1.Items.Add;   //执行到这一步就出错。
    tmpItem.Caption:=edtMissionName.Text;
    tmpItem.SubItems.Add('0');
    tmpItem.SubItems.Add(DateToStr(DateTimePicker1.Date) + ' ' + edtTime.Text);
    tmpItem.SubItems.Add(mmoMission.Text);
  end;是怎么回事。两个窗体单元都相互USE,正常。这是为什么?

解决方案 »

  1.   

    新窗体是SHOW出来的
      FrmNewMission:=TFrmNewMission.Create(nil);
      FrmNewMission.Show;
      

  2.   

    FrmMission不会是你自己在当前单元声明的吧?跟踪一下代码,看看ListView1是不是nil。如果是,说明FrmMission不是你想要的...................
      

  3.   

    可能是我说得不太清楚。是这样的Mission单元有窗体TFrmMission,上面有一个LISTVIEW1控件,引用了NewMission单元NewMission单元又引用了Mission单元(在implementation下USES)。NewMission单元上的窗体为TFrmNewMissionTFrmNewMission窗体是由Mission单元动态创建的,现在我在NewMission单元里操作Mission单元的LISTVIEW就报错。
      

  4.   

    我刚才跟踪了一下,看到FrmMission是NIL,为什么?
      

  5.   


    跟踪结果为NIL,为什么呢我明明UESE了的
      

  6.   

    Uses以后只是本单元内可以使用被引用单元中的类或函数, 并不代表该单元中的对象已经创建.
      

  7.   


    但如frmMission.edt1.text这样的引用却一点问题都没有。
    为什么frmMission.listview1.items.add这样就会出问题?
      

  8.   

    我找到问题了,只是有一点不清楚
      FrmNewMission:=TFrmNewMission.Create(nil);
      FrmNewMission.Show;
    FrmNewMission窗体动态创建出来的不行但我在工程里设置为自动创建就能通过。这是为什么。
      

  9.   

    你在对FrmNewMission上的对象操作的时候,要确认FrmNewMission这个对象是已经创建的才行,
      

  10.   


    我操作的是FrmMission里面的对象,FrmMission是由主窗体动态创建的,是不是里面的控件的对象没能创建
      

  11.   

    一窗体代码procedure TFrmMain.ToolButton1Click(Sender: TObject);
    var
      FrmMission:TFrmMission;
    begin
      FrmMission:=TFrmMission.Create(nil);
      FrmMission.WindowState:=wsMaximized;
    end;二窗体代码procedure TFrmMission.btnNewMissionClick(Sender: TObject);
    var
      FrmNewMission:TFrmNewMission;
    begin
      FrmNewMission:=TFrmNewMission.Create(nil);
      FrmNewMission.Show;
    end;
    三窗体  with FrmMission do  
      begin
      tmpItem:=ListView1.Items.Add; //执行到这一步就出错。
      tmpItem.Caption:=edtMissionName.Text;
      tmpItem.SubItems.Add('0');
      tmpItem.SubItems.Add(DateToStr(DateTimePicker1.Date) + ' ' + edtTime.Text);
      tmpItem.SubItems.Add(mmoMission.Text);
      end;
    一窗体和二窗体是MDI关系,一主二子,三是独立存在的
    程序工程里我设置二、三窗体动态生成,而不是程序一运行时就生成。
      

  12.   


    FrmMission對象存在麼?跟蹤下代碼看看是不是nil了
      

  13.   

    对象不存在,我一窗体创建的FrmMission窗体,然后三窗体再调用FrmMission。对象为什么会不存在?