我动态创建一个窗体,使用如下方法:
      try
        Ms1:=Ms1.Create(Self);
        Ms1.ShowModal;
      finally
        Ms1.Free;
      end;在Ms1.Create中只有一句给一个label的caption 付值的语句。可一执行到Ms1.Create的时候就出错。错误代码为:  
  Access violation at address 004c9928 in module 'DataCollection.exe',Read of address 00000000',Process Stopped.Use step or Run to continue.
为何?如何解决。请帮帮忙。

解决方案 »

  1.   

    你给的信息量太少了加一个 inherited; 在Ms1.Create中试试
      

  2.   

    ms1:=ms1.create(application)//要不变量名不能与类型重复????。
      

  3.   

    ms1:=Tms1.create(application);
    一点要注意要把PROJECT下的option中的MS1放到右边去
      

  4.   

    ///////////////////////////////////////////////////////////////////////////
    // 功能:    运行模态窗体                                                //
    // 入口参数:AForm: 窗体类实例                                           //
    //           AFormClass:窗体类                                           //
    //           AFormCaption:窗体标题                                     //
    // 返回值: 成功 True ;失败 False                                       //
    ///////////////////////////////////////////////////////////////////////////
    function RunShowModal(AForm:TForm;AFormClass: TFormClass;AFormCaption:String):Boolean;
    begin
       Result:=false;
       if not Assigned(AForm) then AForm:=nil;   AForm:=AFormClass.Create(Application);
       try
           AForm.Caption:=AFormCaption;
           AForm.ShowModal;
       finally
           AForm.Free;
           AForm:=nil;
        end;
      Result:=true;
    end;
      

  5.   

    构造器代码如下:
    procedure TMs1.FormCreate(Sender: TObject);
    begin
      Ms1.Label1.Caption:='您确实要删除  '
    +DateBegin+'    到    '+chr($0d)+chr($0a)+DateEnd+'的记录么?';
    end;我以把MS1放到PROJECT下的option中的右边去了。DateBegin 和 DateEnd 是俩个其他单元的变量,是不是他们有问题。
      

  6.   

    你说动态创建一个窗体,那窗体上的label控件你创建了吗?
      

  7.   

    Ms1的visible设置为false   并且移到手动创建栏 Application.CreateForm(TMs1,Ms1);
      try
        Ms1.ShowModal;
      finally
        Ms1.Free;
      end;
      

  8.   


          try
            Ms1:=tform.Create(Self);
            Ms1.ShowModal;
          finally
            Ms1.Free;
          end;
      

  9.   

    hehe, Form.Create时Label还未创建嘛,在FormShow中赋值吧
      

  10.   

    你动态生成的窗体包含了Label了吗?
      

  11.   

    procedure TMs1.FormCreate(Sender: TObject);
    begin
      Ms1.Label1.Caption:='您确实要删除  ' //Msl改成self;
    +DateBegin+'    到    '+chr($0d)+chr($0a)+DateEnd+'的记录么?';
    end;在意个实例创建时,他的名字是不确定的,直接用Msl是不对的。
      

  12.   

    citytramper(阿琪) :说的有道理
      

  13.   

    不用顶了就是citytramper(阿琪) 说的,用Self.Label := 'aaa'或者Label := 'aaa'就不会有问题了,这也是基于面向对象编程应采用的方法。
      

  14.   

    楼主是在 IDE 中设计好的窗体,运行期动态创建。写错了一句
     try
            Ms1:=TMs1.Create(Self);//TMS1
            Ms1.ShowModal;
          finally
            Ms1.Free;
          end;