应用程序执行但有时无法显示

时间:2017-01-24 09:57:22

标签: delphi unidac

这是项目来源:

  Application.Initialize;
  Application.MainFormOnTaskbar := False;
  Application.ShowMainForm := False;
  Application.CreateForm(TMain_Form, Main_Form);
  Application.CreateForm(TData_Module, Data_Module);
  Application.CreateForm(TForm5, Form5);
  Login;
  Application.Run;

创作顺序是: Main_Form,Data_Module,Form5

Uniconnection超时为30秒。

我正在连接到SQL Server。

我在mainForm中有这个:

procedure Login;
begin
  with TUniConnectDialog.Create(nil) do
  try
    try
      Application.MainForm.Hide;
      if not Data_Module.UniConnectDialog1.Execute then
        Application.Terminate

      else
        Application.MainForm.Show
    finally
      Free;
    end;
  except
    on E : Exception do    begin
       ShowMessage('Exception class name = '+E.ClassName);
       ShowMessage('Exception message = '+E.Message);
    end;
  end;
end;

然而,有时我的连接对话框无法显示并且应用程序运行 默默地在后台。我必须使用Windows任务管理器来结束它。

我尝试使用eureka进行调试,但它没有向我显示任何错误。 应用程序执行但无法显示。 这可能发生在10个案例中的3个案例中。 现在我无法弄清楚我在这里做错了什么。

编辑:

procedure Login;
begin
 with Data_Module.UniConnectDialog1.Create(nil) do
      try
      Application.MainForm.Hide;
        if not Data_Module.UniConnectDialog1.Execute then
        Application.Terminate

      else
        Application.MainForm.Show
    finally
    //  Free;
    end;
    end;

编辑2:这也不起作用。

1 个答案:

答案 0 :(得分:0)

这不是一个完整的解决方案(或者可能很难说),但可以纠正主要问题编辑中的错误。不幸的是,我无法在评论中这样做。

procedure Login;
begin
  // with Data_Module.UniConnectDialog1.Create(nil) do
  // 1) Don't use 'with' - it just creates ambiguity
  // 2) You probably don't need to create the dialog
  // 3) If you do the format should be:
  //    Data_Module.UniConnectDialog1 := TUniConnectDialog.Create(???)
      try
      Application.MainForm.Hide;
        if not Data_Module.UniConnectDialog1.Execute then
        Application.Terminate

      else
        Application.MainForm.Show
    finally
    //  Free;
    end;
  end;