是这样的,我开发一个MDI的数据库应用程序,最近我做了一个登录界面,是放在MainForm的onCreate事件中建立的!后来又加了一个数据模块,在工程选项中设置为先于主窗体创建,因为登录窗口也要用到这个数据模块,可是这样老是出现EAbstractError异常,当我将数据模块设置为后于主窗体创建时就好了,可是这样我的登录窗口就不能用这个数据模块了,我该怎么办啊,希望高手来教教我啊!

解决方案 »

  1.   

    呵呵,我也忘了是怎么解决的了。
    你试一下这样:
    登录窗口不要在主窗口的OnCreate里面创建,而是在ProjectOptions里面将它放在DataModule后面创建,在Project -> View Source(查看工程文件),修改代码,控制在登录成功之后才创建MainForm,否则程序直接Terminate
      

  2.   

    登录窗口不要放在主窗口初始化事件里,要么放在OnShow里用条件控制一下,但最好还是放在工程文件里,如楼上说的。
      

  3.   

    登录窗口最好还是放在工程单元里。  Application.Initialize;
      Application.CreateForm(TMainForm, MainForm);
      Application.CreateForm(TDataModule, DataModule);
      加登录代码;    
      Application.Run;
      

  4.   

    绝对可能的事情,如果能贴图我早贴啦,唉,用2001Wind(狂风) 兄的方法应该能解决问题,可是我具体操作就不太清楚了,因为以前没有怎么操作过项目文件!麻烦告诉我可以吗??
      

  5.   

    把你用到的ADOquery或adotable之类的数据库连接直接在登录窗体上,不要放在Data Module
      

  6.   

    dmuser:=Tdmuser.Create(Application);
      BLoginFrm:=TBLoginFrm.Create(Application);
      BLoginFrm.ShowModal;
      if FrmLoginB通过检证 then
       BEGIN
       Application.CreateForm(TBMainFrm, BMainFrm);
       END
      ELSE
       BLoginFrm.Free;
       Dmuser.Free;
      

  7.   

    在工程文件里写吗?
      Application.Initialize;
      Application.Title := '';
      Application.CreateForm(Tdm, dm);
      frm_login:=Tfrm_login.Create(application);
      frm_login.ShowModal;
      Application.Run;
      

  8.   

    不要在oncreate里创建登陆窗口