gpt4 book ai didi

delphi - 执行查询时显示 ProgressBar

转载 作者:行者123 更新时间:2023-12-02 00:49:39 25 4
gpt4 key购买 nike

要在执行查询时显示 ProgressBar,我使用以下代码:

if not Query1.Prepared then
Query1.Prepare;
Query1.Open;

ProgressBar1.Max := Query1.RecordCount;

ProgressBar1.Min := 0;
ProgressBar1.Position := 0;
Query1.First;
while not Query1.Eof do
begin
ProgressBar1.Position := ProgressBar1.Position+1;
ProgressBar1.StepIt;
Query1.Next;
Application.ProcessMessages;
end;

但是 ProgressBar 的显示仍然卡住(我看不到 ProgressBar 的进度)。

执行此查询时如何查看ProgressBar1的进度?

最佳答案

您没有在查询上取得进展。查询发生在调用 Open 时。那是查询被发送到数据库的时候,数据库又会处理它,这需要时间。

一旦查询完成并且您对结果进行迭代,您稍后会尝试执行进度。这可能太快了,以至于不需要进步。无论如何,如果这很耗时,至少它发生在您的代码中,因此您可以显示进度。

您遇到的真正问题是查询发生在别处,在数据库服务器上,您无法从中获得进度回调。我确信某些数据库服务器确实提供进度回调,但我认为您的技术不具备这种功能。

也许对您来说最简单的事情如下:

  1. 将查询代码移到一个单独的线程中。这对于保持主 UI 线程响应至关重要。
  2. 不要尝试填充进度条,因为您没有进度回调而不能这样做,而是使用选取框进度条。这是来回移动的进度条,告诉用户程序正忙,但没有挂起。

关于delphi - 执行查询时显示 ProgressBar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40945131/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com