小弟写拉个TQuickRep打印过程,实现拉些基本功能,现在烦恼的是:不知道怎么打印复选框在网上找拉好久也没什么发现,
各位大虾救命;
代码如下:
//---------------------------------------------
procedure DaYin_DBGrid(dbgrid1:TDBGrid;const s : string);//s 是 BandTitle.caption
var
  I, iLeft,tLeft,iwidth,n: integer;
  DataSetActive: Boolean;
  Qrep: TQuickRep;
  BandTitle, BandColumn, BandDetail: TQRBand;
 // Is_Image : TQRImage;
begin
  if not Assigned(dbGrid1.DataSource) then Exit;
  if not Assigned(dbGrid1.DataSource.DataSet) then Exit;    Qrep := TQuickRep.Create(dbGrid1.Parent);
    Qrep.DataSet := dbGrid1.DataSource.DataSet;
    Qrep.font.Charset := GB2312_CHARSET;
    Qrep.font.Name := '宋体';
    Qrep.Font.Size := 10;    BandTitle := TQRBand.Create(Qrep);
    BandTitle.Parent := Qrep;
    BandTitle.BandType := rbTitle;
    BandTitle.Height := 70;    BandColumn := TQRBand.Create(Qrep);
    BandColumn.Parent := Qrep;
    BandColumn.BandType := rbColumnHeader;
    BandColumn.Height := 40;
    BandColumn.Frame.DrawRight := True;
    BandColumn.Frame.DrawTop := True;
    BandColumn.Frame.DrawLeft := True;    BandDetail := TQRBand.Create(Qrep);
    BandDetail.Parent := Qrep;
    BandDetail.BandType := rbDetail;
    BandDetail.Height := 40;
    BandDetail.Frame.DrawRight := True;
    BandDetail.Frame.DrawLeft := True;    DataSetActive := dbGrid1.DataSource.DataSet.Active;
    if not DataSetActive then dbGrid1.DataSource.DataSet.Open;    tLeft := 0;
    iLeft := 6;
    iwidth := 0;
    n := 0;
    for I := 0 to dbgrid1.Columns.Count-1 do
    begin
      if dbgrid1.Columns.Items[I].Visible then
      begin
        iwidth := iwidth + dbgrid1.Columns.Items[I].Width;
        inc(n);
      end;
    end;
    //------ 比A4 的width大的时候 将自定义纸张大小--------
    if iwidth > trunc(8.27 * Screen.PixelsPerInch) + 1 then
    begin
    //------  PaperSize ---width--
    Qrep.Page.PaperSize := Custom;
    Qrep.Units := Inches;
    Qrep.Page.Width := iwidth div Screen.PixelsPerInch + 1.5;
    end
    //------A4 ----------
    else Qrep.Page.PaperSize := A4;
    
    with TQRLabel.Create(BandTitle) do
    begin
      Parent := BandTitle;
      font.Charset := GB2312_CHARSET;
      font.Size := 12;
      font.Name := '宋体';
      font.Style := font.Style + [fsBold];
     // Width := 161;
      AutoSize := true;
      left := BandTitle.Width -  Width;
      left := left div 2;
      top := 14;
      Caption := s;     
    end;
    with TQRSysData.Create(BandTitle) do
    begin
      Parent := BandTitle;
      font.Style := font.Style + [fsBold];
      Data := qrsDateTime;
      AutoSize := true;
      left := BandTitle.Width -  Width;
      left := left div 2 + 100;
      top := 40;
    end;   for I := 0 to dbgrid1.Columns.Count-1 do
   begin
    if dbgrid1.Columns.Items[I].Visible then
    begin
      tLeft := iLeft + dbgrid1.Columns.Items[I].Width;
      if tLeft <= BandColumn.ClientWidth then      //1
      begin
        with TQRLabel.Create(BandColumn) do
        begin
          Parent := BandColumn;
          Left := iLeft;
          Width := dbgrid1.Columns.Items[I].Width;
          Caption := dbgrid1.Columns.Items[I].Title.Caption;
          Alignment := dbgrid1.Columns.Items[I].Title.Alignment;
          Top := 14;
        end;
        //TQRDBText--------------------
        with TQRDBText.Create(BandDetail) do
        begin
          Parent := BandDetail;
          Left := ileft;
          Width := dbgrid1.Columns.Items[I].Width;
          iLeft := iLeft + Width;  //
          DataSet := dbgrid1.DataSource.DataSet;
          DataField := dbgrid1.Columns.Items[i].FieldName;
          Alignment := dbgrid1.Columns.Items[I].Title.Alignment;
          Top := 14;
        end;
        if n > 1 then
        begin
          with TQRShape.Create(BandColumn) do
          begin
            Parent := BandColumn;
            Left := iLeft-3;
            Width := 1;
            Top := 0;
            height := 40;
          end;          with TQRShape.Create(BandDetail) do
          begin
            Parent := BandDetail;
            Left := iLeft-3;
            Width := 1;
            Top := 0;
            height := 40;
          end;
          n := n - 1;
        end;
      end
      else begin
        break;
      end;
     end;
   end;   //----------- 横条 -------------------
      with TQRShape.Create(BandDetail) do
      begin
        Parent := BandDetail;
        Left := 0;
        Width := BandDetail.Width;
        Top := 0;
        height := 1;
      end;
      with TQRShape.Create(BandDetail) do
      begin
        Parent := BandDetail;
        Left := 0;
        Width := BandDetail.Width;
        Top := 40;
        height := 1;
      end;    Qrep.Preview;
    Qrep.Free;
end;