1.数据库登录时的用户输入窗口是可以去掉的:
用TDatabase来控制与数据库的连接,将其属性LoginPrompt设为False即可。
2.你在线程中创建DataMudule时,是否将DataMudule从工程Options的AutoCreate-forms的选项中去掉了?

解决方案 »

  1.   

    我所指的登陆窗口是指我自己加入的PASSWORDDLG,另DATAMOUDLE一从AUTOCREATE-FORMS中删除。
    另CREATEDATAMOUDLETHREAD中线程创建DATAMOUDLE的代码为
     APPLICATION.CREATEFORM(DATAMOUDLE1,TDATAMOUDLE);
      

  2.   

      原来登陆是要通过数据库验证的,因为程序启动时打开数据库很慢,我就改成密码加密放在REGISTRY中,我的思路是:当用户输入密码和用户名时,系统在处于等待状态,可以在登陆窗口创建之前用一个线程创建DATAMOUDLE,当用户登陆成功,主窗口显示时在对创建DATAMODULE的线程进行辨别是否已结束。可当创建DATAMODULE的线程运行结束后,打开数据库时却出错。
      由于客户对程序启动时间有要求,请高手门帮帮忙!。
      另:我的数据库是用DAO连接ACCESS数据库。
      
      

  3.   

    可以不用线程。在程序启动时加入一个Splash窗口,就象DELPHI启动时的显示一样。
    这样用户就不觉得慢了。program PCapture;uses
      DM in 'DM.pas' {DM1: TDataModule},
      Splash in 'Splash.pas' {FormSplash},{$R *.RES}
    begin
      Application.Initialize;
      FormSplash := TFormSplash.Create(nil);
      FormSplash.Show;
      FormSplash.UpDate;
      Application.CreateForm(TDM1, DM1);
      FormSplash.Hide;
      FormSplash.Free;
      Application.Run;
      

  4.   

    dengdeng那样有什么作用?让本来已经很慢的程序跑得更慢?
    你的打开数据库操作是什么原因造成的打开缓慢?你让我们看一下你的线程创建的过程,完整的贴出你的线程的模块。打开数据库时报的是什么类型的错误?
      

  5.   

    建议你将登录窗体放在另一线程,DATAMOUDLE放在主线程.
      

  6.   

    我可将源码EMAIL给你,请留地址。
      

  7.   

    Delphi的VCL和BDE都不是线程安全的,在线程中操作VCL时要将主线程挂起,在线程中操作
    BDE时,各线程中的Data Control(TTable,TQuery等)的SessionNae都要与不同的Session
    才能保证线程安全。你的代码是否注意到以上两个问题呢?
      

  8.   

    Email Address:[email protected]
    你将鼠标移动到账号那儿,在状态栏会自动显示email的。
      

  9.   

    我觉得没有必要有线程,可自动创建Datamoudle,我认为问题不在这儿