Board logo

Subject: 关于ProgressForm的bug [Print This Page]

Author: xierenxixi    Time: 2008-3-6 16:27     Subject: 关于ProgressForm的bug

当在一个showmodal的窗体上用这个进度条时,关闭后showmodal的窗体会变成不是showmodal的,
这时点主窗体可以把这showmodal窗体给隐藏掉,
原因就是这个的formlist被禁窗体引起的
如图修改代码就不会出现这种问题

procedure ShowProgress(Aowner:TComponent;const Title: string);
var
  i: Integer;
begin
  if not Assigned(ProgressForm) then
    ProgressForm := TProgressForm.Create(Aowner)
  else
    ProgressForm.BringToFront;
  if Title<>'' then
      ProgressForm.lblTitle.Caption := Title;
  ProgressForm.Show;
//这里不用那个循环
  WindowList:=DisableTaskWindows(ProgressForm.Handle);  
  ProgressForm.Update;
end;

procedure HideProgress;
var
  i: Integer;
begin
  if not Assigned(ProgressForm) then Exit;
//关闭改为这样
  EnableTaskWindows(WindowList);
  ProgressForm.Close;
  Application.ProcessMessages;
  ProgressForm.Free;
  ProgressForm := nil;
end;
Author: Passion    Time: 2008-3-8 10:09

感谢指出,已经按照您的提示改正。
另外,能否帮忙写个简单例子验证一下修改后的效果?
Author: xierenxixi    Time: 2008-3-8 11:27

好的,要等等,过两天提供给你
Author: xierenxixi    Time: 2008-3-8 11:32

在附件中,你看下,点时是showmodal,再点里面那按钮弹出进度条后就不是的了

Attachment: Project1.rar (2008-3-8 11:32, 163.09 K) / Download count 457
http://bbs.cnpack.org/attachment.php?aid=383
Author: xierenxixi    Time: 2008-3-8 11:33

我只写了这点代码
procedure TForm2.Button1Click(Sender: TObject);
begin
  ShowProgress('1232');
  Sleep(1000);
  UpdateProgress(100);
  HideProgress
end;
Author: Passion    Time: 2008-3-8 21:52

感谢测试。目前CnPack的CVS上的代码已经按照您的提示进行了修改,如果您能访问CVS的话可下载更新最新代码来重新检验这个问题。

如何获得最新代码请参考:
http://bbs.cnpack.org/viewthread.php?tid=1882&extra=page%3D1
Author: xierenxixi    Time: 2008-3-8 23:16

好的,发现问题我会报告的,




Welcome to CnPack Forum (http://bbs.cnpack.org/) Powered by Discuz! 5.0.0