好象有点问题……Mimafm好象是最先创建的窗体,Application把它作为主Form了?

解决方案 »

  1.   

    那和别名也没有什么关系啊,而且我把
    Session1.deletealias('MyDB');
    Session1.AddStandardAlias('MyDB',extractfilePath(Application.ExeName)+edit1.text,'Paradox'); 
    放到MiMaFm的OnCreate里都是没出错的
    问题是必须在用户选定一个用户名后再设定别名,也就是在用户按下‘登录’按钮之后
      

  2.   

    你的结构可能有点问题啊,为什么不把登录窗口做成像SplashForm那样的呢?Application.Initialize;//放在前面MiMaFm := TMiMaFm.Create(nil);
    MiMaFm.ShowModal;
    if MiMaFm.ModalResult=mrCancel then 
    begin
      Application.Terminate;
      Exit;
    end;
    MiMaFm.Free;SplashForm:=TSplashForm.Create(Application);
    SplashForm.Show;
    SplashForm.Update;
    Application.CreateForm(TFmMain, FmMain);

    然后,你的别名设置放在“登录”按钮的单击事件里面,这样登录结束后可以保证别名设置完毕。
    另外,取消登录用Close关闭窗体,“登录”按钮的ModalResult设置为mrOK,并且事件处理程序中不要用Close显式的关闭窗体。
      

  3.   

    看看以下几个方法有没有用:
    1. 生成别名后,用Session的SaveConfigFile方法保存别名。
    2. 生成别名后,把Session的Active属性设为False再设为True。
    3. 生成数据库别名之后,把Database的Connected属性设为False再设为True。