<strong>老问题,如何在NT下套打定义纸张大小<strong>(44分)

  • 主题发起人 主题发起人 springm
  • 开始时间 开始时间
S

springm

Unregistered / Unconfirmed
GUEST, unregistred user!
套打证明书,用Printer.Canves.TextOut控制输出,打印的证明超出A4纸的范围,有一部分打
不出,可在控制面板的打印下将默认纸设为A3,就可以打印,但为了使用者的方便,还是想在
打印程序中用过程控制,因为现在机关中工作的人太!@#%%^&amp;^&amp;^.在大富翁中有个过程
procedure TForm1.Button1Click(Sender: TObject);
var
Device:Array[0..256] of Char;
Driver:Array[0..256] of Char;
Port:Array[0..32] of Char;
hDMode:THandle;
pDMode:PDevMode;
begin

Printer.GetPrinter(Device,Driver,Port,hDMode);
if hDMode<>0 then

pDMode:=GLobalLock(hDMode);
if pDMode<>nil then

begin

pDMode^.dmPaperSize:=256;//改为0也不行
pDMode^.dmPaperLength:=1140;
pDMode^.dmPaperWidth:=1900;
pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERSIZE;
pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERLENGTH;
pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERWIDTH;
end;

ResetDC(Printer.Handle,pDMode^);
GLobalUnLock(hDMode);
end;


procedure TForm1.Button2Click(Sender: TObject);
begin

With Printerdo

begin

begin
Doc;
Canvas.TextOut(10,10,'fkgfjhg');
EndDoc;
end;

end;

在NT下无效,dmPaperSize:=256或dmpapersize:=0都没用!!
希望能获取在NT下控制打印的过程!!!希望大家能帮助小弟,这关系着月初发M的问题!!

 
在QuickRpt下,最好用自定义方式。下为小小经验;@Q@
1、先设好自定义纸张:打印机->文件->服务器属性->创建新格式:输入一个格式名称->保存格式;再将打印机的默认纸张设为刚才的格式即可
2、在QuickRpt中单击鼠标右键,在弹出的栏中选择Report Setting即可
 
呵呵,我是在Canvas上画再打印,不是用QuickRep!!(^.^)
 
唉,俺就在机关工作,所以太@!##$@$~@#
 
呵呵,大家多关心一下
 
高手快进来!!!
 
高手快进来!!!
 
NT has restrictions (user right) on setting the printer mode,
w95/98 will meet your need.
 
我原来在nt下编程用不能用自定义,又换成windows98
 
接受答案了.
 

Similar threads

I
回复
0
查看
854
import
I
I
回复
0
查看
820
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部