我做了一个学校查询系统的小程序,ComeInForm是它的登陆窗口,也就是一个输入密码进入系统的窗体,其他几个Form都是登陆后链接上的一些窗体,但不知为何会出现以下错误.Edit1.Text中的值就是密码输入框.
  另外,我还想请教一下Application.Create(TMainForm,MainForm)起着一个什么样的作用.谢谢!
if (Edit1.Text='123') OR (Edit1.Text=Memo1.Lines.Text) then
  begin  Application.Create(TMainForm,MainForm);
  Application.Create(TUpDataModule1,UpDataModule1);
  Application.Create(TQueryForm,QueryForm);
  Application.Create(TPasswordForm,PasswordForm);
  Application.Create(TDataModule1,DataModule1);
  Application.Create(TDataUpdataForm,DataUpdataForm);
  ComeInForm.Hide;
  MainForm.Show;
  end[Error] Unit_Load.pas(43): Incompatible types: 'TComponent' and 'Class reference'
[Error] Unit_Load.pas(44): Incompatible types: 'TComponent' and 'Class reference'
[Error] Unit_Load.pas(45): Incompatible types: 'TComponent' and 'Class reference'
[Error] Unit_Load.pas(46): Incompatible types: 'TComponent' and 'Class reference'
[Error] Unit_Load.pas(47): Incompatible types: 'TComponent' and 'Class reference'
[Error] Unit_Load.pas(48): Incompatible types: 'TComponent' and 'Class reference'

解决方案 »

  1.   

    不匹配的类型,组件怎么能和类等效呢?
    你应该把if then
    写在你的button单击事件里
      

  2.   

    你的窗体还没有创建呢,怎么就使用Edit1。
      

  3.   

    这些就是Button事件里面的啊
    只不过我从里面考了这一部分,谢谢,请指教!
      

  4.   

    在FormShow中写代码
    不要在FormCreat中写
      

  5.   

    没有啊,我是在ButtonClick里面写的
      

  6.   

    9494Application.Create(TMainForm,MainForm)是对类TMainForm,MainForm实例化。
      

  7.   

    好象写错了吧,是Application.createform(Tform1,form1);
    对于要首先出现登录窗口的,应该把project.pas里的创建其他窗口的代码删掉,保留用与创建datamodule,以及comeinform,然后在密码验证成功后加上
    Application.createform(Tmainform,mainform);
      

  8.   

    Application.Create(TMainForm,MainForm);
    改为Application.CreateForm(TmainForm,MainForm);
    注意先去采单栏上的project——options——把mainform移到available forms里
      

  9.   

    谢谢,我的问题解决了,就是将Application.Create(TMainForm,MainForm);
    改为Application.CreateForm(TmainForm,MainForm);
    但不知道是什么原因,请指教.