【问题标题】:How do I hide the mainform of my Delphi XE Forms Application on startup?如何在启动时隐藏我的 Delphi XE Forms Application 的主窗体?
【发布时间】:2015-11-30 12:01:21
【问题描述】:

我有一个 Delphi XE 表单应用程序,我想在其中添加一种从命令行使用输入参数启动应用程序的方法。以这种方式启动应用程序时,我不希望显示主窗体,而是希望应用程序执行任务并关闭,类似于普通控制台项目

我该怎么做?在项目源码中,我尝试了各种迭代

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm7, Form7);
  if Paramstr(1) <> '' then begin
    Application.MainForm.Hide;
  end;
  Application.Run;
end.

但表格显示的内容是一样的。并且编译器不会让我在 onShow 期间设置可见

【问题讨论】:

  • 使您的应用程序不可见时的常见模式是有一个托盘图标,以便想要恢复它的用户可以这样做。查看内置于 VCL 中的 TTrayIcon。如果您的应用应该执行某些任务并自动关闭,但可能会失败或超时(花费太长时间)并且需要让用户重新配置,那么这是一种常见的方法。

标签: forms delphi


【解决方案1】:

Application.ShowMainForm 设置为False

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TForm7, Form7);
  Application.ShowMainForm := Paramstr(1) = '';
  ....
end.

【讨论】:

  • 饼干来了!谢谢
  • 我会使用ParamCount = 0
  • 我刚刚从问题中复制了测试
【解决方案2】:

在调用 Application.Run() 之前将 Application.ShowMainForm 属性设置为 False 将完成您的要求。但是,除非您的 MainForm 确实需要执行的任务,否则我建议您在命令行任务模式下运行时根本不要创建 MainForm:

begin
  Application.Initialize;
  if ParamCount() > 0 then
  begin
    // perform task as needed...
  end else
  begin
    Application.MainFormOnTaskbar := True;
    Application.CreateForm(TForm7, Form7);
    Application.Run;
  end;
end.

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-17
    • 1970-01-01
    • 1970-01-01
    • 2010-10-15
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 2013-10-19
    相关资源
    最近更新 更多