关闭

肉夹膜式执行方法

528人阅读 评论(0) 收藏 举报

很多时候,我们遇到这样得情况:

       在很多方法的前面部分和后面部分(可能只有一句代码)都一样,或者相似。 比如在一个需要花费些许时间的处理中,我们经常会在处理的同时显示一个进度条,这样给客户和我们自己一点信心。 可是如果有很多这样的处理,我们就会发现有这样代码

procedure  perform1;

begin

    ShowAProgress('正在连接。。。');

   .....

   CloseProgress;

end;

procedure performN

begin

    ShowAProgress('正在处理××,请稍等。。。');

   .....

   CloseProgress;

end;

显然我们的代码重复了。 解决这样的问题,应该有很多办法吧。 我不知道别人怎么解决的,下面是我的解决办法:

type
  TProc = procedure of object;
 

  procedure RunWithProgress(P: TProc);   ///  我管它叫夹饼方法。  不知道大家有没有意见。

implementation

procedure TForm1.Aloop;  //  某个处理。
var
  iLoop: Integer;
begin
  chk1.Checked := True;
  while chk1.Checked do
  begin
    Application.ProcessMessages;
    Inc(iLoop);
  end;
end;

procedure TForm1.RunWithProgress(P: TProc);   // 夹饼的实现。
begin
  ShowGaugeWithAvi('it is running....');
  p;
  CloseGauge;
end;

procedure TForm1.Button1Click(Sender: TObject);  //  每次只要调用夹饼就可以了。
var
  P: TProc;
begin
   P := aloop;
   RunWithProgress(p);  
end;

end.

 

  不知道有没有不同看法。。。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:743次
    • 积分:25
    • 等级:
    • 排名:千里之外
    • 原创:1篇
    • 转载:0篇
    • 译文:0篇
    • 评论:0条
    文章分类
    文章存档
    阅读排行
    评论排行