我要打印表中一条记录,怎样做?
解决方案 »
- 怎么让fastreport 打印的一项 内容 值为 外面可输入框的值?
- 高手帮忙
- 进销存中 物品多单位的问题? 头都大了。
- 没有真真的高手!!没有!!!有本事解决解决
- DELPHI菜鸟发问,大家帮忙啊。
- 如何使用MSFlexGrid控件,并在客户的机子上安装它
- 如何判断当前硬盘是IDE硬盘还是SCSI硬盘,并获得磁盘序列号(在线等待...)?
- 有大侠对Delphi连接CHM 帮助文档有经验帮小弟一下可以吗??
- 谁有WIN API对串口操作的程序及函数使用说明,发给我一份。 (送100分)
- rave报表的问题
- 做过指纹辨识系统的同仁请进来!在先等待!
- 想从一个ADODataSet中将记录添加到另一个ADODataSet中?
没什么不同的var x,y:single;
PPix,ppiy,pagen:integer;
begin
with datamodule1.Query1 do
begin
close;
sql.Clear;
sql.Add('select id,name,ip,adr,mny,sta from datauser where mny<0');
execsql;
active:=true;
end;
pagen:=1;
PPIX:=GetDeviceCaps(Printer.Handle,LOGPIXELSX);
PPIY:=GetDeviceCaps(Printer.Handle,LOGPIXELSY);
printer.BeginDoc;
x:=7;
y:=0.5;
printer.Canvas.Font.Size:=15;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),'欠费用户单');
x:=0.5;
y:=1.5;
printer.Canvas.Font.Name:='Courier New';
printer.Canvas.Font.Style:=[fsBold];
printer.Canvas.Font.Size:=10;
printer.Canvas.Font.Color:=clblack;
printer.Canvas.Font.PixelsPerInch:=
getdevicecaps(printer.canvas.handle,LOGPIXELSY);
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),'用户号码');
x:=x+3;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),'姓名');
x:=x+2;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),'状态');
x:=x+1;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),'数字地址');
x:=x+3;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),'金额');
x:=x+1;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),'用户地址');
x:=0.5;
y:=y+0.5;
with datamodule1.query1 do
begin
first;
while not eof do
begin
if (fieldbyname('mny').asinteger<0) and (fieldbyname('sta').asinteger=3) then
begin
if y>=27 then
begin
printer.Canvas.TextOUT(trunc(9.5/2.54*PPIX),trunc(28/2.54*PPIY),IntToStr(pagen));
printer.EndDoc;
pagen:=pagen+1;
y:=0.5;
printer.BeginDoc;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),'用户号码');
x:=x+3;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),'姓名');
x:=x+2;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),'状态');
x:=x+1;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),'数字地址');
x:=x+3;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),'金额');
x:=x+1;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),'用户地址');
x:=0.5;
y:=y+0.5;
end;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),fieldbyname('id').asstring);
x:=x+3;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),fieldbyname('name').asstring);
x:=x+2;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),fieldbyname('sta').asstring);
x:=x+1;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),fieldbyname('ip').asstring);
x:=x+3;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),fieldbyname('mny').AsString);
x:=x+1;
printer.Canvas.TextOut(trunc(x/2.54*PPIX),trunc(y/2.54*PPIY),fieldbyname('adr').asstring);
y:=y+0.5;
x:=0.5;
end;
next;
end;
end;
printer.Canvas.TextOUT(trunc(9.5/2.54*PPIX),trunc(28/2.54*PPIY),IntToStr(pagen));
printer.EndDoc;
begin
try
ppDesigner.Caption:='笔记本打印单';//打印模式
ppDetailData.DataSource:=DHdate.DataSource1;//数据模块中的 DataSource1
ppMasterData.DataSource:=BJBSource;//窗体的数据源
ppReport.template.Description:=sPrintReportPath+'\笔记本打印单.RTM';//报表的存储位置
ppReport.template.LoadFromFile;
ppReport.DeviceType :='Sreen';//全屏方式
except
end;
ppDesigner.showModal;
end;
(这里用到四个组件:如果你没有的话也不能,它们都是RBuider里的,你要打印的是一条记录,那么你在ppDetailData中把RangeBegin和RangeEnd都设置为rbCurrentRecord就可以了,要打印多条的话就是为rbFirstRecord和reLastRecord就可以了。)
又些地方也许我讲的不怎么清楚,在联系!