数据库的表是以2维的形式存在的,我的要很(100分)

  • 主题发起人 主题发起人 wp231957
  • 开始时间 开始时间
W

wp231957

Unregistered / Unconfirmed
GUEST, unregistred user!
简单,就是把这个2维表输出到打印机
要求可以设置字体,间距等等
最好不要使用RAVE一类的东东
 
实在不行把表导到Excel,什么功能都有了。
 
问题是我最终还是要通过程序来打印啊
 
uses printers;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
Printer.begin
Doc;
Printer.Canvas.Font.Name:='宋体';
Printer.Canvas.Font.Size:=8;
Printer.Canvas.Font.Pitch:=fpFixed;
Printer.Canvas.TextOut(10, 10,'大富翁你好!');
Printer.Canvas.TextOut(1010,10,'大富翁你好!');
Printer.Canvas.TextOut(10, 160,'大富翁你好!');
Printer.Canvas.TextOut(1010,160,'大富翁你好!');
Printer.EndDoc;
end;
把上面的字符串换成你数据表的字段值,坐标按你的要求,循环打印即可。
 
谢谢KAIDA
很成功
不过我想问下这个像素值怎么算
10 到1010
10 到160 这个怎么算,每行多高,每个字多宽,和字体,字号等是否有关系呢
 
换页怎么换;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
假如我有1000条纪录,分20页来打印
分不够可以再加(呵呵)
procedure TForm1.Button8Click(Sender: TObject);
var
n:integer;
begin
query1.Databasename:='';
query1.SQL.Text:='select * from test';
query1.Open ;
///////////////////////////////////////////////////
n:=0;
Printer.begin
Doc;
while not query1.Eofdo
begin
Printer.Canvas.Font.Name:='宋体';
Printer.Canvas.Font.Size:=8;
Printer.Canvas.Font.Pitch:=fpFixed;
Printer.Canvas.TextOut(10, n+10,query1.Fields[0].asstring);
Printer.Canvas.TextOut(210,n+10,query1.Fields[1].asstring);
Printer.Canvas.TextOut(410,n+10,query1.Fields[2].asstring);
Printer.Canvas.TextOut(810,n+10,floattostr(query1.Fields[3].asfloat));
n:=n+20;
query1.Next ;
end;
Printer.EndDoc;
end;
 
怎么在打印机上画表线
 
文本宽度:
Printer.Canvas.TextWidth('大富翁你好!')
文本高度:
Printer.Canvas.TextHeight('大富翁你好!')
纸张宽度:
Printer.PageWidth
纸张高度:
Printer.PageHeight
 
移到某一点:
Printer.Canvas.MoveTo(100,100);
画线:
Printer.Canvas.LineTo(1000,1000);
另起一页:
Printer.NewPage;
你可以用我上面给出的函数自行判断,如果满一页,就换新页。
 
接受答案了.
 
如何实现打印预览呢
 
打印预览只要把 Printer 换成弹出窗体 Form1 即可,当然要注意窗体的“点”是屏幕的一个象素,与 Printer 是不同的,坐标要进行适当的转换。
 

Similar threads

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