我在程序中有一段procedure,是关于打印的,我在form中加了一个progressbar,我想在这个过程中和progressbar关联起来,用进度条来显示打印程序执行的进度,怎么做啊?要在我这段PROCEDURE中加什么啊?或者progressbar怎么设置啊?请教各位!谢谢……
procedure TForm1.Button3Click(Sender: TObject);
var
  tmp:TStringList;
  i,h,j:integer;
begin
  if stringgrid1.Cells[0,1]<>'' then
  begin
    Printer.Canvas.Font.Name := '宋体';
    Printer.Canvas.Font.Size := 9;    Printer.BeginDoc;
       printer.Canvas.TextOut(0,0,combobox1.Text+'同志考勤资料:');      h := 1;
      for j:=0 to stringgrid1.RowCount-1 do
      begin
        printer.Canvas.TextOut(0,h*(-Printer.Canvas.Font.Height+30),stringgrid1.Cells[0,j]);
        printer.Canvas.TextOut(500,h*(-Printer.Canvas.Font.Height+30),stringgrid1.Cells[1,j]);
        printer.Canvas.TextOut(1000,h*(-Printer.Canvas.Font.Height+30),stringgrid1.Cells[2,j]);        h := (h+1) mod 50;
        if h = 0 then Printer.NewPage;
      end;
    Printer.EndDoc;
  end
  else showmessage('无打印内容!');  //tmp:=TStringList.Create;
  //inifile.ReadSection('stuff',tmp);
  //for i:=0 to tmp.Count-1 do
  //  combobox1.Items.Add(tmp.Strings[i]);
  //stringgrid1.Cells[0,2]:='aa';
  //stringgrid1.Cells[0,3]:='abb';
  //label4.Caption:=DateToStr(DateTimePicker1.Date);
  //l:=trunc(6.42);
  //i:=trunc(DateTimePicker1.Date - DateTimePicker2.Date);
  //label4.Caption:=datetostr(DateTimePicker1.Date);
  //label4.Caption:=formatdatetime('yyyymdd',DateTimePicker1.Date+100);
  //label4.Caption:=inttostr(i);
end;

解决方案 »

  1.   

    用quickreport。需要打印的内容、数据库字段等置于quickreport中。打印的时候,自动出现progressbar显示打印执行的进度。
      

  2.   

    楼上的:我用打印的过程是为了举个例子而已,手头没有合适的例子,随手拿来的,关键是想搞清楚怎样实现progressbar,请赐教!!谢谢!
      

  3.   

    spec:
      progressbar.max   //最小
      progressbar.min   //最大
      progressbar.position  //位置,根据进度改变positon, 即产生动态效果
      progressbar.smooth   //是否平滑可以在form中放入progressbar也可以代码中临时创建form、创建form1.progressbar显示动态效果后释放form