help!!!!!我在程序中怎么设置QuickRep和打印机,才能让打印机打印出我自定义的纸张大小的区域!

beata88 2002-12-26 10:09:09
我对打印机的设置如下:

var
aDevice: array[0..CCHDEVICENAME-1] of Char;
aDriver: array[0..MAX_PATH-1] of Char;
aPort: array[0..31] of Char;
hDevMode: THandle;
pDevMode: PDeviceMode;
begin
// 获取打印机DeviceMode的句柄

Printer.GetPrinter(aDevice, aDriver, aPort, hDevMode);
if hDevMode <> 0 then
begin
// 获取指向DeviceMode的指针
printer.PrinterIndex:=printer.PrinterIndex;
pDevMode := GlobalLock(hDevMode);
if pDevMode <> nil then
begin
pDevMode^.dmPaperSize := DMPAPER_USER; //自定义纸张
pDevMode^.dmPaperLength := 250; //纸长
pDevMode^.dmPaperWidth := 400; //纸宽
pDevMode^.dmFields := pDevMode^.dmFields or DM_PAPERSIZE;
pDevMode^.dmFields := pDevMode^.dmFields or DM_PAPERLENGTH;
pDevMode^.dmFields := pDevMode^.dmFields or DM_PAPERWIDTH;
ResetDC(Printer.Handle, pDevMode^);
GlobalUnlock(hDevMode);
end;
end;

我现在要让打印机只打印长为250;宽为400的纸张那么大小的区域。

以下是我对QuickRep的设置(对打印机设置后是否还要这样设置,我不知道):
QuickRep1.Page.Length:=250;
QuickRep1.Page.Width:=400;
请各位高手多多指点,在线等!!!!!!谢谢
...全文
192 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
beata88 2002-12-28
  • 打赏
  • 举报
回复
本贴!今天结帐!!来看有分!!!分不够加之
ayukowa 2002-12-28
  • 打赏
  • 举报
回复
up
guestroad 2002-12-27
  • 打赏
  • 举报
回复
学习。。。。
hmily1688 2002-12-27
  • 打赏
  • 举报
回复
如果是win2000应该是打印机得设成自定义的,程序也得设,这一点quickreporet自身有bug ,你可以升级quickreport到3.62来解决 。如不升级
,设quickreport为纸张类型先设成custom,你自已的尺寸,再设为为default,这一点很重要 。我做的时关于quickreport在win2000下头都大了。
mrfanghansheng 2002-12-27
  • 打赏
  • 举报
回复
to:beata88(想成为高手)

我说的quickrep3。62在51delphi有下载,带源码,我们用得不错
blackfiles 2002-12-27
  • 打赏
  • 举报
回复
试试先
beata88 2002-12-27
  • 打赏
  • 举报
回复
高手还不进来领分呀!!我明天就结贴!!如果今天解决马上就结!!
beata88 2002-12-26
  • 打赏
  • 举报
回复
to; mrfanghansheng(***木鱼***) :
我从哪里下载quickrep3.62;怎么升级???谢谢
beata88 2002-12-26
  • 打赏
  • 举报
回复
现在在win98里。win2000我也要这们实现!!!!!
mrfanghansheng 2002-12-26
  • 打赏
  • 举报
回复
什么操作系统?win2000,那可能要升级quickrep到3.62就可以了
beata88 2002-12-26
  • 打赏
  • 举报
回复
要是分不够,我会加的!!!!!
beata88 2002-12-26
  • 打赏
  • 举报
回复
to : liuhelin(鹤林)

我的意思就是不要像你这样操作,而是让程序自动去设置。
liuhelin 2002-12-26
  • 打赏
  • 举报
回复
你的打印机(开始-设置-打印机)必须把纸张设置为自定义
然后你的
QuickRep1.Page.Length:=250;
QuickRep1.Page.Width:=400;
才有效
不过程序怎么设置打印机的纸张我就不知道了
beata88 2002-12-26
  • 打赏
  • 举报
回复
我急呀,高手都到哪去了!!!
帮帮忙吧!!!
beata88 2002-12-26
  • 打赏
  • 举报
回复
对了,我的打印机是Epson LQ-1600KIII ESC/P-K
beata88 2002-12-26
  • 打赏
  • 举报
回复
高手快点来呀。。
highroad 2002-12-26
  • 打赏
  • 举报
回复
我也遇到了这个问题,在win2000内的页面设置好象无效。
beata88 2002-12-26
  • 打赏
  • 举报
回复
多谢楼上两位提出宝贵的建议!!!!
我现在就是为了这个问题,做好的报表没法正确打印。还有哪位高手能解决此问题,分肯定少不了。
cqhydz 2002-12-26
  • 打赏
  • 举报
回复
用win2000中可以,一种无奈的解决方法,在打印中自定义纸张就可以,但注意Epson新的一些驱动中不允许使用自定义纸张,你可改用LQ-1600K
另一种就中有打印指令中使用,在Epson说明书中有详细的指令介绍
pukerno3 2002-12-26
  • 打赏
  • 举报
回复
这个就有点困难啦,说老实话,前几天我也是这个问题,最后也没有解决,还是要手动改了纸张设置。不过如果从程序中可以调用到打印驱动的纸张设置应该可以解决的,但是打印机换了的话又会有问题。

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧