delphi adoquery进度条 10

准备做一个编译Oracle无效对象的功能,先是在listview里面查询所有无效对象,然后点击按钮的时候根据listview内容生成alter。。。compile的语句去... 准备做一个编译Oracle无效对象的功能,先是在listview里面查询所有无效对象,然后点击按钮的时候根据listview内容生成alter。。。compile的语句去执行,执行的过程有进度条显示进度,query控件当无效对象很多的时候程序假死了,然后进度条是从0最后直接到了100.没有中间递增的过程,这样一般是怎么搞定的?比如假死和进度条过度的问题。代码如下:
for I := 0 to lvCompile.Items.Count - 1 do
begin
rzprgrsts1.Percent := 100 * Trunc((I + 1) / lvCompile.Items.Count);
edtErrInfo.Lines.Clear;
edtErrInfo.Lines.Add('正在编译对象 ' + lvCompile.Items.Item[I].SubItems[0]);
strTmp := 'ALTER ' + lvCompile.Items.Item[I].SubItems[1] + ' ' + lvCompile.Items.Item[I].SubItems[0] + ' COMPILE';
with DM.orqryCompile do
begin
try
Close;
SQL.Clear;
SQL.Add(strTmp);
ExecSQL;
except
end;
end;
end;
展开
 我来答
RedBaronVIP
2014-10-12 · TA获得超过1147个赞
知道小有建树答主
回答量:655
采纳率:0%
帮助的人:238万
展开全部
我不知道你所谓的“Oracle无效态销对象”是神马玩意,亮禅但显敬闭尘示ADOQuery进度是有办法的。
1、将ADOQuery的ExcuteOption属性中的eoAsyncFetch设为True,使其能够触发异步消息。
2、在ADOQuery的OnFetchProgress事件里处理进度,进度会显示在窗体标题上:
procedure TForm1.ADOQuery1FetchProgress(DataSet: TCustomADODataSet;
Progress, MaxProgress: Integer; var EventStatus: TEventStatus);
begin
Self.Caption := '完成百分比: ' + IntToStr(Trunc(Progress / MaxProgress * 100)) + '% ';
Application.ProcessMessages;
end;
更多追问追答
追问
我用的是raize的progressbar控件,它没有异步的选项。这个怎么弄?
追答
您怎么不明白,异步是ADOQuery的功能,你把用标题显示进度改成Bar显示进度不就得了!我说了半天白说了,响应的是ADOQuery的OnFetchProgress事件,跟ProgressBar有毛关系!
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式