下了个第三方控件 进度条,如何使进度条跟某个操作联系起来用,比如我想把DBGrid表里的记录导出来,并用进度条显示进度,
等导完时进度条也走到头,显示100%,如何实现??

解决方案 »

  1.   

    var i:Integer;
    begin
      for i:=0 to DBGrid.count-1 do
        .....
          ProgressBar.position:=50;
          .....
      end;
    end;
      

  2.   

    发错了  重发var i:Integer; 
    begin 
      for i:=0 to DBGrid.Columns.Count-1 do 
        ..... 
          ProgressBar.position:=round(i/(DBGrid.Columns.Count)*100);
        ..... 
      end; 
    end;
      

  3.   

    要看你是怎么导出DBGRID中的数据了,如果你是用循环导出,可以把DBGRID中的数据的总数count设置为进度条的最大值,最小值就是0了如果要显示百分比进度,可以用以下方法:进度=i*100/count  其中i是循环体中的变量,代表已经导出到第几条数据,把这个进度值转换为字符串型,再加上'%'就可以了。
      

  4.   

    [Quote=引用 3 楼 xinxinshou2009 的回复:]
    要看你是怎么导出DBGRID中的数据了,如果你是用循环导出,可以把DBGRID中的数据的总数count设置为进度条的最大值,最小值就是0了如果要显示百分比进度,可以用以下方法:进度=i*100/count  其中i是循环体中的变量,代表已经导出到第几条数据,把这个进度值转换为字符串型,再加上'%'就可以了。
    [/Quote 百分比控件已经有了设置,根据Demo演示,进度条最大值设为200都用蛮久时间,根据你的方法,如果有上万条记录,进度条设置为一万以上那不是好慢
      

  5.   

    需要先获取数据总量然后for i:=0 to xx do
    根据i/总量来判断当前的百分比。再让进度条跳动。。
      

  6.   

    while not adotable1.eof do
    begin
      //导出记录操作
       ......
       //修改进度条
       ProgressBar.position:=round(adotable1.recno/(adotable1.RecordCount)*100); 
       //处理消息
       application.ProcessMessages
    end;