我想用timer组件实现自动登陆,把timer的时间定位1000,当点击程序出现登陆界面,然后隔1000之后,自动响应登陆按钮的时间,出现主窗口.但是主窗体出现之后就不停的出现cannot make a visible window modal的对话框,一直出,不知道怎么解决.是个菜鸟,请各位网友指导一下,谢谢.40分

解决方案 »

  1.   

    你创建的是不是MDI APP,然有又在你的主窗口的OnShow里用ShowModal的方式打开其他子窗体?
    用Show就行了,ShowModal只能用于非MDI CHILD的窗体。
      

  2.   

    对于已经显示出来的窗体,不能再使用模式方式显示,必须先hide一下。
      

  3.   

    这个不是很难 看例子:
    program MT;uses
      Forms,
      controls,
      U_Main in 'Form\U_Main.pas' {Fm_Main},
      U_DM in 'Form\U_DM.pas' {DM: TDataModule},
      U_IdeSerialNumber in 'Form\U_IdeSerialNumber.pas',
      U_Des in 'Form\U_Des.pas',
      U_Globe in 'Form\U_Globe.pas',
      U_EditPass in 'Form\U_EditPass.pas' {Fm_EditPass},
      U_Login in 'Form\U_Login.pas' {Fm_Login},
      U_UpdateTM in 'Form\U_UpdateTM.pas' {Fm_UpdateTM},
      U_SysObj in 'Form\U_SysObj.pas',
      u_DM1 in 'Form\u_DM1.pas' {Fm_DM},
      U_ST_GL in 'Form\U_ST_GL.pas' {Fm_ST_GL},
      U_ZW in 'Form\U_ZW.pas' {Fm_ZW},
      U_TMQK in 'Form\U_TMQK.pas' {Fm_TMQK},
      U_ST_Select in 'Form\U_ST_Select.pas' {Fm_ST_Select},
      U_Public in 'Form\U_Public.pas',
      U_Select_MB in 'Form\U_Select_MB.pas' {FM_Select_MB},
      U_Test_Paper in 'Form\U_Test_Paper.pas',
      Unit5 in 'Form\Unit5.pas' {Form5},
      U_MB_M in 'Form\U_MB_M.pas' {FM_MBGL},
      U_SJ_M in 'Form\U_SJ_M.pas' {FM_SJ},
      U_updateMB in 'Form\U_updateMB.pas' {fm_UpdateMB},
      U_UpdateXM in 'Form\U_UpdateXM.pas' {fm_UpdateXM},
      U_MTServiceIntf in 'Form\U_MTServiceIntf.pas',
      U_PRO in 'Form\U_PRO.pas' {frm_pro},
      U_showSJ in 'Form\U_showSJ.pas' {fm_showSJ},
      U_SZ in 'Form\U_SZ.pas' {frm_SZ},
      U_Parts in 'Form\U_Parts.pas' {fm_Parts},
      U_Frame in 'Form\U_Frame.pas' {Doc: TFrame},
      U_TXEdit in 'Form\U_TXEdit.pas' {fm_TXEdit};{$R *.res}begin
      Application.Initialize;
      Application.CreateForm(TFm_Main, Fm_Main);
      Application.CreateForm(TDM, DM);
      Application.CreateForm(TFm_Login, Fm_Login);
      Application.CreateForm(Tfm_TXEdit, fm_TXEdit);
      Fm_Main.Show;
      if Fm_Login.ShowModal=mrOK then
      begin
      fm_main.UpdateMainMenu(true);
      Application.CreateForm(TFm_EditPass, Fm_EditPass);
      Application.CreateForm(TFm_UpdateTM, Fm_UpdateTM);
      Application.CreateForm(TFm_DM, Fm_DM);
      Application.CreateForm(TFM_Select_MB, FM_Select_MB);
      Application.CreateForm(Tfm_UpdateMB, fm_UpdateMB);
      Application.CreateForm(Tfm_UpdateXM, fm_UpdateXM);
      Application.CreateForm(Tfm_showSJ, fm_showSJ);
      Application.CreateForm(Tfm_Parts, fm_Parts);
      end else application.Terminate;
      Application.Run;
    end.
      

  4.   

    将主窗口的Visible设置为False,试试
      

  5.   

    Timer控件没有停止掉,估计是不停的在重复登陆。登录成功了,就将timer不使能。
      

  6.   

    看来 CloneCenter 已经给了答案了。
    在OnTime时间最后一行加上:
    Timer1.Enable:=False;//如果是Timer1的话!
    让OnTimer时间只执行一次!