【问题标题】:making a wizard interface in delphi 7在delphi 7中制作向导界面
【发布时间】:2011-12-05 11:33:54
【问题描述】:

我正在使用 delphi 7,我正在尝试制作一个向导界面。我不知道是否有更简单的方法来制作向导,所以我想为向导的每个步骤制作单独的表单,当用户单击“下一步”时,活动表单关闭并打开下一个。

这是两个连续表单的屏幕截图:

我已经创建了一个以 2 个表单作为参数的过程:将要关闭的表单和向导的下一个表单

class Procedure Tspad.nextForm(showForm, closeForm: TForm);
begin
   closeForm.Close;
   showForm.Showmodal;
end;

当我点击“下一步”按钮时,会执行以下代码:

Tspad.nextForm(echipContractForm, clientContractForm);

当我运行程序时,我按下“下一步”按钮,下一个表单出现,但当前表单没有关闭。

我怎样才能完成这项工作,或者还有其他更有效的方法来创建向导吗?

【问题讨论】:

标签: delphi delphi-7 wizard


【解决方案1】:

制作向导的一种非常常见的方法是使用页面控件。向导的每个不同页面都是页面控件中的不同页面/选项卡。我相信这就是 Windows 实现向导的有效方式。

您当然想隐藏所有选项卡。通过为每个标签页将TabVisible 设置为False 来执行此操作。当您希望通过向导向前和向后移动时,例如当用户单击下一个或上一个按钮时,根据您的偏好设置ActivePageActivePageIndex 来实现此效果。

【讨论】:

  • 这就是我过去的做法。为您的向导创建一个单独的表单,其中包含页面控件和一些按钮。
  • 我同意这一点,但也同意 LaKraven 的想法,即每页制作一个表单,并在运行时停靠页面。否则,巫师往往会变成一个巨大的意大利面球。
  • @Warren LaKraven 实际上是在建议框架而不是表单,我假设在设计时将它们对接。但无论哪种方式都有效,并且可以成为阻止意大利面的一个很好的技术,我同意。
  • 为了获得更好的结果,您可以将 DoubleBuffered 设置为 true。
【解决方案2】:

将显示在单个表单上的内容分割的一个好习惯是使用框架

Frame 很像一个表单,只是它没有自己的窗口,而是位于 宿主表单 内。

当与(正如 David Heffernan 所建议的)TPageControl 甚至 TNotebook 结合使用时(这与 TPageControl 几乎完全相同,只是它没有以标签开头),您最终会得到一个易于维护的向导。

【讨论】:

  • +1 但TNotebook 有点奇怪。它对我来说看起来很旧,可能更难使用。
  • 我之所以提到它是因为我不记得 TPageControl 是否真的存在于 Delphi 7 中(这些天我经常使用它,但不记得在 Delphi 7 前后见过它)
  • 是的,它出现在 D7 中,而且在此之前很久
  • 很高兴知道 :) TNotebook 位于 Win 3.1 选项卡中,所以是的...我建议它是旧版 ;)
  • 太棒了 :) 我强烈建议将 David 的答案标记为正确答案,因为我的答案更多是对他的扩展;)
【解决方案3】:

JVCL 有一个很好的控件,可以以非常简单有效的方式制作向导(TJvWizard)。见http://jvcl.delphi-jedi.org/

【讨论】:

  • 同意。为您节省大量重新发明轮子的时间。
【解决方案4】:

你可以试试这些:

【讨论】:

    【解决方案5】:

    您可以测试一些可以帮助您完成此任务的组件(内部使用 tPageControl 或 TNotebook)。见this link

    问候。

    【讨论】:

      【解决方案6】:

      您也可以考虑 TMS TAdvSmoothStepControl(不是免费的!)。 另一个解决方案,但仅限于您的程序的“外部”,是使用Inno Setup 制作向导,即使用于“非安装设置”目的。

      事实上,使用 Inno Setup,您可以进行很多思考(修改 .ini 文件和注册表,启动/停止程序...),这对于无需“安装”程序的向导很有用。

      【讨论】:

      • 您回答中的最后一条语句假定 OP 正在尝试生成安装向导。屏幕截图表明并非如此。我建议编辑你的那部分答案并留下 TAdvSmoothStepControl 的建议(这肯定是一个很好的组件)
      • @LaKraven 虽然 Inno Setup 的主要用途是创建安装设置,但您也可以将它(通过一些技巧)用作简单操作的向导,例如关闭程序、更改 .ini 文件根据用户的选择,再次运行程序。可能所有人都不清楚,我会编辑我的答案。
      猜你喜欢
      • 1970-01-01
      • 2012-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-28
      • 2011-03-02
      • 2011-04-29
      相关资源
      最近更新 更多