主表单前的进度条

时间:2013-04-18 18:56:24

标签: delphi progress-bar delphi-xe2

我编写了一个扫描网络然后使用所有信息填充列表框的应用程序,发现过程需要一段时间才能完成,因为我们目前拥有的网络设备数量;我想显示如此类型的进度条让用户知道网络正在扫描,但我不知道该怎么做,你能指点我正确的方向吗?我正在考虑动态创建一个小表单,然后使用进度条填充它,但我现在迷失了。谢谢。

2 个答案:

答案 0 :(得分:1)

您可以将进度条放在与ListBox相同的表单上。

显示进度是一种艺术形式。如果您知道要提前扫描多少个网络设备,请将最大设置为该数字。然后,当您更新ListBox检查时,如果您在下一个网络设备上,还可以更新进度条的位置

您还可以使用两个进度条 - 一个用于网络设备的数量,另一个用于当前网络设备。此外,您可以在发现更多内容时更新最大

问题在于,当您启动时可能不知道有多少网络设备,或者最后一个设备可能需要更长的时间来扫描,然后将所有先前的设备组合在一起。在这种情况下,您可以使用频闪进度条,它可以反复前进。您可以在更新ListBox时进行更新,或者在计时器上更新它。这真的只是让用户知道你很忙并且没有锁定。

如果您希望在进行过程中不让用户单击控件,则可以禁用这些控件。

答案 1 :(得分:1)

您的问题意味着网络扫描是程序启动时的第一件事,而不是用户点击表单上的按钮时,例如FormCreate事件。如果您正在执行此操作,则可以考虑将网络扫描代码放入线程中,并在主窗体启动时启动线程。这样,用户实际上会看到表单,您可以从线程发送表单ProgressBar或状态更新。

更简单的方法是在表单上放置Timer,然后在FormCreateFormActivate启动计时器。然后,计时器的OnTimer事件将启动网络扫描,然后您可以更新ProgressBar或将状态消息发送到ListBox或其他任何内容。