有关套打不规则表格的问题,十分急! ( 积分: 100 )

  • 主题发起人 主题发起人 bbhorse
  • 开始时间 开始时间
B

bbhorse

Unregistered / Unconfirmed
GUEST, unregistred user!
在这边没有办法上传图片,请大家帮一下,谢谢了!
http://bbs.2ccc.com/topic.asp?topicid=205703
 
在这边没有办法上传图片,请大家帮一下,谢谢了!
http://bbs.2ccc.com/topic.asp?topicid=205703
 
帮顶

--------签名档---------------------------

惊爆开源站

http://www.source520.com
80G源码电子书免费免注册下载,大量精辟技术文档库随时更新
 
你直接用reportMachime的第三方控件,很好完成的。他里面有交叉报表等
 
试试 Grid++Report, 有专门的例子说明此问题。主页:http://www.rubylong.cn
 
如果表格已经画好,你可以直接用textout按坐标打印
如果需要划线,你可以先在word或excel中划表,然后使用delphi自带的word或execl控件填上数据进行打印
 
谢谢各位
"reportMachime"在那个地方有下载呀?
“Grid++Report”怎么样才能与DELPHI融合在一起呀?
"textout"怎么输出?
 
我们当时套打发票时,也是这样的表,这可以通过一些报表工具来打印,但当时我们考虑再三,还是采用了一个最简单有效的方法,直接用打印机的canvas来输出,但代码我现在找不到了,兄弟,你看看tprint或begin
doc的帮助,应该很容易找到答案
 
会 HTML 么?会的话你可以用它画表格,简单、免费、不需要第三方。
 
//给你个例子,下面是我的程序片段:
//说明:users 里要加上printers
//定义变量 PPIX,PPIY,topmm,leftmm:integer;

//根据打印机分辩辩得出实际打印尺寸(毫米)
PPIX:=GetDeviceCaps(printer.Handle,LOGPIXELSX);
PPIY:=GetDeviceCaps(printer.Handle,LOGPIXELSY);
//取预设定的打印位置
with adoquery1do
begin
close;
sql.clear;
sql.Add('select * from dysz where 表类型=:vblx');
parameters.ParamByName('vblx').Value:='登记表';
open;
leftmargin:=Trunc(fieldbyname('左边距').AsInteger/25.4*PPIX);
topmargin:=Trunc(fieldbyname('上边距').AsInteger/25.4*PPIY);
end;

messagedlg('上好登记表后,按回车键开始打印.打印人:'+adoquery2.fieldbyname('姓名').asstring,mtinformation,[mbok],0);
printer.begin
Doc;
with adoquery2do
begin
with printer.Canvasdo
begin
// font.Charset:=ANSI_CHARSET;
font.Charset:=GB2312_CHARSET;
font.name:='宋体';
font.Style:=[fsBold];
font.Size:=8;
mkdywz('编号','cb',leftmm,topmm);//取字段'编号'的预设打印位置
TextOut(leftmargin+leftmm,topmargin+topmm,fieldbyname('户别').AsString+fieldbyname('编号').asstring);//在指定位置打印编号
mkdywz('姓名','cb',leftmm,topmm);//取字段'姓名'的预设打印位置
TextOut(leftmargin+leftmm,topmargin+topmm,fieldbyname('姓名').AsString);//在指定位置打印姓名
mkdywz('性别','cb',leftmm,topmm);//取字段性别预设打印位置
TextOut(leftmargin+leftmm,topmargin+topmm,fieldbyname('性别').AsString);//在指定位置打印性别;
....
....
printer.enddoc;
end;

//取打印位置的函数
声明
procedure mkdywz(Azdm,Ablx:string;var vleft,vtop:integer);
内容
procedure Tdybu.mkdywz(Azdm,Ablx:string;var vleft,vtop:integer);
begin
with adoquery1do
begin
close;
sql.Clear;
sql.Add('select * from dywz where zdm=:vzdm and blx=:vblx');
parameters.ParamByName('vzdm').Value:=Azdm;
parameters.ParamByName('vblx').Value:=Ablx;
open;
vleft:=trunc(fieldbyname('leftwz').AsInteger/25.4*PPIX);
vtop:=trunc(fieldbyname('topwz').AsInteger/25.4*PPIY);
end;
end;
 
没有办法,我只有给它打三次了,一次打印一个数据区,兄弟、姐妹们,再帮我看一下这个问题呀:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3290593
谢谢了!
 
怎么都没有人来回答呀!
 
请whitehorse,帮我看一下另一个问题呀!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=329059
看一下有什么好的办法呀!
 
陕西太守:说的非常对!无招胜有招!计算好需要的数据,然后prints,就是非常繁琐!
 
我一般用ADO控件:,没有你说的问题,用adoconnec设好数据库连接参数,adoquery写sql语句取数据记录,用datasource定义数据源为adoquery1,用dbgrid显示数据.可作修改标题定义列宽及数据处理等
 
是不是我的设置的纸不对呀!
 
对于这样的问题,一般是先实物扫描一张你要套打的图,然后在你需要套打的部分放置可以输入或者是数据感知控件,这样就可以保证你的东西打到相应的位置上。
 
套打是没有问题了,只是不能全部打印出来而已。
帮我看一下这个:
http://www.delphibbs.com/delphibbs/dispq.asp?lid=3290593
谢谢了!!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部