如题
解决方案 »
- 关于做上传到ftp的activx组件的问题.
- 请问有getmidstr这个函数吗?????!
- 如何在delphi运行界面中弹出ODBC的设置界面?在线等待!
- ShellExecute函数能不能使用相对路径?如何实现?
- 菜鸟再发问:有没有封装了标准C,如stdio,conio等函数的dll的pascal 单元?
- 关于邮件发送软件的提问!
- 怎样将panel上所有的label和image等--保存为一幅完整的图片(当然是panel大小)?苦思瞑想毛渐少!!!
- 在线等待:三层结构中,客户端连接服务器端老是报:数据库用户、密码错
- 做word转化为pdf,要用到什么技术?
- 如何用delphi编制数字转换器
- 求简单的加密算法,急~~~~~~
- 使用idhttp控件下载,如何限制下载速度?
var
pl,pr,pt,pb:integer;//页边距
px,py:integer;//打印机分辨率
ps:integer;//打印机与显示器分辨率之比
lh:integer;//行高
i:integer;
x,y:integer;//打印坐标
rowb,colb:integer; //行距、行距
begin
//初始化页面
pl:=SpinEdit1.Value;
pr:=SpinEdit2.Value;
pt:=SpinEdit3.Value;
pb:=SpinEdit4.Value;
rowb:=SpinEdit6.Value;//行距
colb:=SpinEdit7.Value;//列距
//将获得的打印机分辨率由厘米转换为英寸
px:=Trunc(GetDeviceCaps(Printer.Handle,LOGPIXELSX)/2.54);
py:=Trunc(GetDeviceCaps(Printer.Handle,LOGPIXELSY)/2.54);
//将屏幕分辨率转换为打印机的比例
ps:=Trunc(GetDeviceCaps(Printer.Handle,LOGPIXELSX)
/Screen.PixelsPerInch);
//设置打印方向
if ComboBox1.Text='横向打印' then
Printer.Orientation:=poPortrait;
else
Printer.Orientation:=poLandscape;
//获得打印的字体和大小
Printer.Canvas.Font.Name:=Combobox2.Text;
Printer.Canvas.Font.Size:=Spinedit5.Value;
Printer.canvas.Font.Color:=clred;
Printer.Canvas.Pen.Color:=clblue;
//设置行高
lh:=Printer.Canvas.TextHeight(DBgrid1.Font.Name);
//打印的起始位置(打印机画布上的位置)
x:=PX*pl;
y:=PY*pt;
//打印DBGrid1中的内容
if (Table1.Active=true) and (Table1.RecordCount>0) then
begin
//设置一打印机任务标题
Printer.Title:='DBGrid内容打印';
with Printer do
begin
BeginDoc;
Table1.First;
while not Table1.Eof do
begin
for i:=0 to DBGrid1.FieldCount-1 do
begin
//设定打印的宽度
if (x+DBGrid1.Columns.Items[i].Width*ps)
<=(PageWidth-ps*pr) then
begin
//画出表格线
Printer.Canvas.Rectangle(x,y,x+dbgrid1.Columns.Items[i].Width*ps,y+lh);
//如果为第一行时,打印DBGrid1确的标题
if y=PY*pt then
Canvas.TextOut(x+rowb,y+colb,
DBGrid1.Columns[i].Title.Caption)
else
//其它行,打印每行的内容
Printer.Canvas.TextOut(x+rowb,y+colb,
DBGrid1.Fields[i].asString);
end;
//下一列的横坐标,下一列的纵坐标不变
x:=x+dbgrid1.Columns.Items[i].Width*ps;
end;
//打印下一记录
if not (y=py*pt) then
Table1.next;
x:=px*pl; //打印下一行时,横坐标回到行首
y:=y+lh;
//打印满一页时,新建一页
if (y+lh)>(PageHeight-py*pb) then
begin
NewPage;
x:=px*pl;
y:=py*pt;
end;
end;
EndDoc;
end;
Table1.First;//回到DBGrid1首行
Application.MessageBox('已打印完成','打印',32);
end;
end;procedure TForm1.FormActivate(Sender: TObject);
begin
//获得打印可选字体,并设置初始字体为DBGrid1的字体,字号
ComboBox2.Items:=Printer.Fonts;
ComboBox2.Text:=DBGrid1.Font.Name;
Spinedit5.value:=DBGrid1.Font.Size;
Table1.DatabaseName:=ExtractFilePath(Application.ExeName);
Table1.Open;
end;
end.