小弟写拉个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;
各位大虾救命;
代码如下:
//---------------------------------------------
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;
解决方案 »
- vb,delphi,powebuider我该学哪一个?
- 下面关于文件流的操作,有那些错误?
- 50分 怎么样解决LISTVIEW的底图多次重绘
- 朋友,进来看看怎么做的?是关于表的问题
- 小弟调试socket程序,遇到一个问题,忘高手解决。
- //********************如何得到代码的当前行号***************************
- 十万火急 请教高手,在一个应用里怎么判断另一个应用程序 如果是打开了就关闭它否则做别的事情?
- 如何编写适应不同分辩率屏幕的窗口程序
- !!!那里有 RedhatLinux7.1或RedhatLinux7.0的免费下载!!!
- Kingron(戒网中……)快说你的更简单的方法,我给20分!!
- 求职:我也来求职来 走过路过不要错过了 买不买都来看看啊。。。。。。。。。。。。。。。。。。。。
- JPG图片写入ACCESS数据,如何在QREPORT报表中利用QRDBImage显示出供打印???
自已画。
QRShape
QRImage都可以吧,然后在打印事件中自己去弄就可以了,