在Ui上显示进度

时间:2016-03-25 21:40:07

标签: delphi

我有一个简单的应用程序。一个表单和一个DataModule。 我在DataModule中有一些进程,并希望在UI中显示进度(使用进度条)。

最好的方法是什么?

1 个答案:

答案 0 :(得分:3)

最好的方法是在数据模块上定义一个Event,然后在表单中为事件实现一个处理程序,并将其分配给datamodule事件。 然后,在您的过程中,您调用事件,从而调用事件处理程序。

这样的事情:

type
  TMyProgressEvent = procedure (Position, TotalSteps: Integer; Msg: string) of object

TMyDM = class
private
  FOnProgress: TMyProgressEvent;
....
....
public
  procedure UpdateCustomerOrders;
  property OnProgress: TMyProgressEvent read FOnProgress write FOnProgress;
end

TMyForm = class
....
....
  // you can change the position or progress bar here
  // or if you want to log 
  procedure MyFormProress(Position, TotalSteps: Integer; Msg: string);
end

您的TMyDM.UpdateCustomerOrders可能如下所示:

 procedure TMyDM.UpdateCustomerOrders()
 begin
   for I = 1 to 10 do 
   begin
     ... 
     ... you are processing something 
     ...
     //call event like this
     FOnProgress(I, 12, 'looping');
   end;
   .... another process here
   FOnProgress(11, 12, 'another process');

   .... one more process here
   FOnProgress(12, 12, 'process finished');
 end;