delphi - 在执行 DBExpress 查询时,如何让我的程序响应用户输入?

标签 delphi dbexpress

ibdac 查询 ( http://www.devart.com/ibdac/components.html ) 有一个函数 executing 我可以在其中编写如下内容:

 while MyQuery.Executing do
 begin
   application.ProcessMessages;
   Sleep(1);
 end;

如何使用 dbexpress 查询实现相同的代码(没有类似的功能)?

最佳答案

没有类似的功能。但是您可以在后台线程中执行 MyQuery,主线程将在后台线程完成后等待。例如:

type
  TMyThread = class(TThread)
  private
    FQuery: TSQLQuery;
  protected
    procedure Execute; override;
  public
    constructor Create(AQuery: TSQLQuery);
  end;

constructor TMyThread.Create(AQuery: TSQLQuery);
begin
  inherited Create;
  FreeOnTerminate := False;
  FQuery := AQuery;
end;

procedure TMyThread.Execute;
begin
  FQuery.ExecSQL;
end;

var
  oThread: TMyThread;
....

  oThread := TMyThread.Create(MyQuery);
  try
    while not oThread.Finished do begin
      Application.ProcessMessages;
      Sleep(1);
    end;
  finally
    oThread.Free;
  end;

PS:顺便说一句,我正在使用AnyDAC 。它内置 background execution .

关于delphi - 在执行 DBExpress 查询时,如何让我的程序响应用户输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7468895/

相关文章:

delphi - 如何检测Delphi程序是否在PlayOnMac中运行

windows - Delphi:具有自定义字体颜色的 ListView (vsReport) 单列标题标题?

sql-server - Delphi 的多数据库访问

database - 在哪里可以找到适用于 mysql 的免费开源 dbexpress 驱动程序

mysql - Delphi:使用元数据从 MySQL 返回数据库名称

android - Delphi Seattle 无法引用默认的 FMX 类

delphi - 即使 ApplyUpdates 位于 try 内,仍然会弹出错误消息...除了

sql - 查询不返回结果(Delphi、Oracle、DBExpress)

mysql - Delphi 2010 和 Dbexpress 部署

delphi ITaskFolder.RegisterTaskDefinition 不起作用