我最新画了一个界面,界面上有一个button执行导入多条数据操作,用一个laibel实时记录记录导入了多少条procedure TfrmBatStockTransfer.hbtImportClick(Sender: TObject);
var
  iRowCount,iRow,count : Integer;
begin
   iRowCount :=1000;
   lbStat.Caption := '(0/' + IntToStr(iRowCount) + ')';
   for count:=0 to iRowCount-1 do
   begin
     ....
   end;
   lbStat.Caption := '(1000/' + IntToStr(iRowCount) + ')';
end;为啥我发现label的caption直接变成了‘1000/1000’,而未有'0/1000'这个状态

解决方案 »

  1.   

    lbStat.Caption := '(0/' + IntToStr(iRowCount) + ')';
    后面加一句
    application.ProcessMessages;
      

  2.   

    在循环里面加这两句
    application.ProcessMessages;
    Sleep(10);
      

  3.   

    第一是执行太快,第二是应该将这句放在循环里面lbStat.Caption := '(1000/' + IntToStr(iRowCount) + ')';
    你放在最后一句,应该就是执行完成后才获取到的值。
      

  4.   

    他这个代码,Label标签的Caption值压根就没在循环里。只有6楼说到了点子上唉
      

  5.   

    lbStat.Caption := '(0/' + IntToStr(iRowCount) + ')';
    lbStat.Refresh;如果不行,则加上
    Application.ProcessMessages;
      

  6.   


    他的程序,lbstat.caption只有两个值‘0/1000’和‘1000/1000’,人家是说为什么看不到‘0/1000’
      

  7.   

    执行太快了,你在中间加个延时函数sleep(1000);
    肯定有机会看到‘0/1000’和‘1000/1000’
      

  8.   

    var
      iRowCount,iRow,count : Integer;
    begin
       iRowCount :=1000;
       button1.Caption := '(0/' + IntToStr(iRowCount) + ')';
       Sleep(1000);                      //循环时间太短 加个延时函数
       for count:=0 to iRowCount-1 do
       begin   end;
       button1.Caption := '(1000/' + IntToStr(iRowCount) + ')';
    end;