用WIN API吧, 里面关于打印的API有一大堆。你要的参数,也许可以通过 GetJob(...)来取得。试试看 我也不是很熟。
解决方案 »
- 对话框居中显示
- 组件析构问题
- 100分求教:数据库设计的困惑
- 这样增加变量应怎么表示呢?
- 关于FASTREPORT 的难度问题,有经验的朋友进来看看,不要只是为了接分,如果没能解决问题,不会接贴。
- 关于在delphi中代码分段
- 用ado建立主从表,当更新主表中的信息时总是出错,不论是什么字段都一样,但是从表却没有关第,烦啊
- 兄弟姐妹们请帮帮我★★★★★★★★★★★★★★★★★★★★★★★★。。。。。。。。。。。。。。。。
- 安装好的DELPHI6中在Data Access选项卡上怎么找不到数据表控件(table)
- ******************一个关于类的继承与构件制作的问题(小CASE)!请大家快来帮忙啊!来者有分.....*****************
- help!一个关于DCOM的问题,望各位大虾援助。
- 找寻关于制作邮件服务器的热心伙伴
uses Printers; procedure TForm1.Button1Click(Sender: TObject);
var
EscapeCode : integer;
Margin : TPoint;
begin
if PrintDialog1.Execute then begin
{$IFDEF WIN32}
Margin.x :=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
Margin.y :=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
{$ELSE}
EscapeCode := GETPRINTINGOFFSET;
if Escape(Printer.Handle,
QUERYESCSUPPORT,
sizeof(EscapeCode),
@EscapeCode,
nil) <> 0 then
if Escape(Printer.Handle,
GETPRINTINGOFFSET,
0,
nil,
@Margin) < 1 then begin
EscapeCode := GETPHYSPAGESIZE;
if Escape(Printer.Handle,
QUERYESCSUPPORT,
sizeof(EscapeCode),
@EscapeCode,
nil) <> 0 then
if Escape(Printer.Handle,
GETPHYSPAGESIZE,
0,
nil,
@Margin) > 0 then begin
Margin.x := (Margin.x -
GetDeviceCaps(Printer.Handle, HorzRes)) div 2;
Margin.y := (Margin.y -
GetDeviceCaps(Printer.Handle, VertRes)) div 2;
end else begin
Margin.x := 0;
Margin.y := 0;
end;
end;
{$ENDIF}
Memo1.Lines.Add(IntToStr(Margin.x));
Memo1.Lines.Add(IntToStr(Margin.y));
end;
end; 呵呵,我也是Copy下来的,借花献佛吧,你自己看.
Margin.y :=GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
老兄,这段代码就是取得左边和上边所不能打印到的大小,再取得打印机的分辩率就可以换算成毫米了!就这样!自己看看GetDeviceCaps()函数的帮助就懂了!
打印方向也可以读printer......怎么写我忘了!(…_…)自己看一下帮助!