再问自定义打印纸张(100分)

  • 主题发起人 主题发起人 xll
  • 开始时间 开始时间
X

xll

Unregistered / Unconfirmed
GUEST, unregistred user!
有一个套打程序,版面是在Qreport中设计的,在Qreport中定义如下:

Qreport的纸张类型为custom,长100mm,宽60mm,
打印时:From1.Qreprot.QRprinter.free;
From1.Qreprot.QRprinter:=nil;
From1.Qreprot.print;
为了自定义纸张类型,在Qreport的beforprint事件中加了下列程序:
setpagesize(60,100);

以下为 setpagesize 的过程
procedusr setpagesize(x,y:integer)
var
Device: array[0..255] of char;
Driver: array[0..255] of char;
Port: array[0..255] of char;
hDMode: THandle;
PDMode: PDEVMODE;
begin
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(Device, Driver, Port, hDMode);
if hDMode <> 0 then
begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then
begin
if (x = 0) or (y = 0) then
begin
pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
pDMode^.dmPaperSize := DMPAPER_FANFOLD_US;
end
else
begin
pDMode^.dmFields := pDMode^.dmFields or
DM_PAPERSIZE or
DM_PAPERWIDTH or
DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := x
pDMode^.dmPaperLength := y
end;
GlobalUnlock(hDMode);
end;
end;
Printer.PrinterIndex := Printer.PrinterIndex;
end;

打印时打印机只是动了一下便无任何反应,????
 
1、最好在操作系统设置打印机的纸张为自定义,而且大小和你的一样。
2、你改的是printer,实际上输出打印的是 quickrep.QRPrinter
 
刚才我的办法行不行?
 
用户并不知道这些,所以设置打印机的纸张为自定义必须在程序内完成!
我不清楚上段程序有哪儿不对头?
即使该成
From1.Qreprot.Printer.free;

也没用!!
况且,QRprinter设置纸张根本没用,必须用TPrinter
???
 
quickrep设置自定义纸张是没用,你有quickrep源码吗?有的话我告诉你哪里改
好了,改了以后就可以直接用自定义大小了
 
很遗憾,我没有quickrep的源码,我不明白:
即使我将qreport的自动生成的对象指定为Printer而不是QRprinter,
设置的纸张仍无效?
pipi,你是高手,你有好办法吗??
 
我知道上述程序中DEVMODE的内容在系统注册表HKEY_LOCAL_MACHINE/SYSTEM/CURRENTCONTROLSET/CONTROL/PRINT/PRINTERS/
下有存放,如果程序中在打印之前直接修改此注册表项,则可以实现自定义纸张大小。原因似乎是QuickReport的自定义纸张大小没有设定到系统打印机上。
 
在报表中直接设置纸张大小不是更好吗?
 
pipi,你有quickrep的源码吗?
有的话请给我一个?
 
http://www.nease.net/~tomcar/
 
我有源码请问怎么改请问
 
注意:
至少你给出的代码中少了调用这样的一个函数,其它部分与我成功的例子相似
千万别向我要这个例子,因为那样会使我有负疚感的,
不过,提示你一下,你在写了那么大一段代码后,怎么没有调用SetPrinter函数呢!
什么叫为山九仞,功亏一匮,这就是啦,呵呵!
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
688
SUNSTONE的Delphi笔记
S
S
回复
0
查看
683
SUNSTONE的Delphi笔记
S
I
回复
0
查看
844
import
I
I
回复
0
查看
651
import
I
后退
顶部