第1步: 建了一个新工程。
第2步: File--> New--> Data Module
第3步: 在Unit2的      public { Public declarations }  下加了一行.
                         one: String;  //我加的。
第4步:双击主窗体,在TForm1.FormCreate中加入DataModule2.one := '';
 
结果运行错误,
指向:Application.CreateForm(TDataModule2, DataModule2);此行错。而且DataModule2.敲入以后谈不出选择菜单。是怎么回事,我初学.希望大家帮我解决。我随时与大家交流,谢了!
                                    

解决方案 »

  1.   

    菜单file--->use unit命令然后选择unit2把TDataModule2引用过来
      

  2.   

    可是他提示 Unit 'Unit1' already uses all the units in the project.
      

  3.   

    我把Unit2 加到Unit1中的uses.运行后它还是蓝显
    Application.CreateForm(TDataModule2, DataModule2);
      

  4.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Unit2;type
      TForm1 = class(TForm)
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation
    {$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
        ControlModule.one:= '';
    end;end.unit Unit2;interfaceuses
      SysUtils, Classes;type
      TControlModule = class(TDataModule)
      private
        { Private declarations }
      public
        { Public declarations }
        one: String;
      end;var
      ControlModule: TControlModule;implementation{$R *.dfm}end.program Project2;uses
      Forms,
      Unit1 in 'Unit1.pas' {Form1},
      Unit2 in 'Unit2.pas' {ControlModule: TDataModule};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TForm1, Form1);
      Application.CreateForm(TControlModule, ControlModule);
      Application.Run;
    end.
    然后Application.CreateForm(TControlModule, ControlModule);蓝显
      

  5.   

    Application.CreateForm(TDataModule2, DataModule2);
    这句加在了什么事件里?
      

  6.   

    ControlModule.one:= '';这句注释掉试试....
      

  7.   

    肯定没有把你的Data Module单元引入你的form1单元中!
      

  8.   

    是在主窗体里加入uses Unit2;
    不是在工程文件里
      

  9.   


    呵呵,讲那么多干嘛:

    Application.CreateForm(TForm1, Form1);
    Application.CreateForm(TControlModule, ControlModule);
    换过来
    Application.CreateForm(TControlModule, ControlModule);
    Application.CreateForm(TForm1, Form1);
      
      

  10.   

    Application.Initialize;  Application.CreateForm(TDataModule2, DataModule2);//先创建,你还没创建就想用拉
       Application.CreateForm(TForm1, Form1);
      Application.Run;
      

  11.   

    或者
    把Application.CreateForm(TControlModule, ControlModule);
    剪切到form1.create事件里
    放到ControlModule.one:= '';前面
      

  12.   

    注释掉以后没有问题,我怀疑是DataModule建不起来?
      

  13.   

    因为你在form1的creat事件里就调用了ControlModule窗体实例但是你还没有创建呢....所以要先创建ControlModule在给ControlModule.one赋值
      

  14.   

    ControlModule是在Form1之后创建的,而你在ControlModule还未创建时便在Form1的Create中引用它,当然出错,诚如 bluemeteor所说,注释ControlModule.one:= '';就可以啦
      

  15.   

    打开project -options 看看form的创建顺序.
      

  16.   

    应该把Application.CreateForm(TForm1, Form1);
    Application.CreateForm(TControlModule, ControlModule);改为:
    Application.CreateForm(TControlModule, ControlModule);
    Application.CreateForm(TForm1, Form1);因为要先创建后引用。
    我试过了,一定行的。
      

  17.   

    support liusp;补充:
      1、one 可以在DataModuleOnCreate中赋值
      2、补充第一点,Delphi中变量不需要初始化
      3、补充第二点,Delphi中变量最好不要初始化
      

  18.   

    创建顺序错了!!!
    DataModule还没创建怎么就引用呢???Application.CreateForm(TControlModule, ControlModule);
    Application.CreateForm(TForm1, Form1);