3

handle のデルファイで次のコードを使用しました。

procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet; Progress,

  MaxProgress: Integer; var EventStatus: TEventStatus);

begin

    Progressbar1.Visible:=true;

    Progressbar1.Max:=MaxProgress;

    Progressbar1.Ppsitian:=Progress;

    Progressbar1.Visible:=false;

end;

しかし....効果が見られません(このコードは実行されません)

ユーザーがデータベースで検索のボタンをクリックしたときのクエリ実行の進行状況を、プログレスバーのフィルターの開始から終了まで表示したいと考えています。

ボタンonclickコード:

with ADOQuery1 do

begin

SQL.Clear;

SQL.Add('select * from tbl1 where id = '+Edit1.Text);

Open;

end;

しかし、OnFetchProgress イベントにコードを記述しないかのように、プログレス バーに変更は加えません。

私はあなたを代表しましたか?

4

1 に答える 1

5

openプロシージャを呼び出す前に、プロパティExecuteOptionsをに設定する必要がありますeoAsyncFetch

このサンプルを確認してください

with ADOQuery1 do
begin
 SQL.Clear;
 SQL.Add('select * from tbl1 where id = '+Edit1.Text);
 ExecuteOptions:=[eoAsyncFetch];
 Open;
end;


procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet; Progress,
  MaxProgress: Integer; var EventStatus: TEventStatus);
begin
  ProgressBar1.Max      :=MaxProgress;
  ProgressBar1.Position :=Progress;
  Application.ProcessMessages;
end;
于 2010-11-21T17:18:28.517 に答える