关于报表打印的问题(急)!(200分)

  • 主题发起人 主题发起人 plzh
  • 开始时间 开始时间
P

plzh

Unregistered / Unconfirmed
GUEST, unregistred user!
我将纸张设为B5为什么在报表预览打印时,与B5不符合,总是以A4的
格式显示。
 
>>我将纸张设为B5
在什么地方设的, 在设计中,还是打印机的设置中? 如果是后者, 则用设置后
的纸张大小修改你的report中的纸张试试.
 
因为我做的报表中固定的纸张大小B5,所以我是在设计时就设置好了。
 
不会吧! 你用的是什么版本,什么控件?
另外, 预览时怎么看出是A4纸?
 
我认为是DELPHI的BUG,因为我在使用D4的QR时遇到类似问题,即在做好一个REPORT后
有想改变它的纸张大小,结果怎么摁哪个保存按纽,都不能存住,迫不得已,只好先在
REPORT上放一个控件,再删除它,再保存就会连纸张设置的改变一起保存住了.
 
因为A4与B5的预览结果一样。
 
我将纸张大小设为 coustom size width :182mm long:257mm 时预览打印都正常
但换一台机子就不行了。真没有办法。
有哪位朋友能推荐一个好的报表控件, 不范类似的错误。
 
我真的对QR失去信心了,但由于对Delphi的偏爱,寄希望在将来的好版本.
真不知道为什么Delphi选了QR
ReportBuilder 不错没有那么多毛病,而且方便易用.想要吗?
 
dj:要,不知到哪 里下载.最近的邮箱不好用.
 
不可能,设置好PageSiae后,TQuickRep上的标尺会
自动更改.
1.是否在其他地方改了PageSize?
2.你的打印机是什么?
3.你的Delphi与QR的版本是否匹配?
4.如实在不行,建议重新setup Delphi.
 
换成B5只有横向标尺改变。 但预览、打印时长度却和A4纸长度相同。
看样子,只有重新安装DELPHI再试一次了。
 
可到这儿D: http://www.digital-metaphors.com/prorb/realrbpro.html
PassWord: brandichastaine
 
在report setting 中将其设置为B5,标尺与实际相符。
可是在预览时却各设为A4的预览结果一样。真不知道应该
怎么办好?大家有什么好的办法给解决吗? 这个问题已经
困扰了我许多天。
 
在预览时却各设为A4的预览结果一样
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^这是因为你在打印机的纸张设置中为A4纸.
 
出现这个问题的主要原因是,在预览打印设置时,将纸张设置为B5总存不住,
更改不了打印机的纸张大小。所以预览结果总是打印机的缺省纸张A4大小。
我要编写的打印程序纸张大小是固定的,因此想在程序内部直接设置一个
固定大小的纸张,请问用程序如何设置?我知道用API可以实现但是自己又
写不出来, 特请教。
 
哈哈!真凑巧.这几天一直为这个问题闹心.刚好下午把他解决了.
1.用DELPHI的PRINTSETUPDIALOG是不行的.
2.我自己做了一个打印设置对话框.结果有一个小小的BUG----
当在网络上,当用联想1+1打印机(hp)时,当运行十几次时---死机.
我调试了几天,百思不得其解,于是-------
3.我只有暂且调用打印机属性对话框了.请使用下面的函数:
function PrintSetup(hParent: THandle):Boolean;//参数为父窗的属性
const
MSG_NO_PRINT='系统没装打印设备!';
var
FHandle:THandle;
HPrt:THandle;
FDevice:array[0..79] of char;
FDriver:array[0..79] of char;
FPort:array[0..79] of char;
begin
try
FHandle:=0;
HPrt:=0;
Printer.GetPrinter(FDevice, FDriver, FPort, FHandle);
OpenPrinter(FDevice, HPrt, nil);
PrinterProperties(hParent,HPrt);
ClosePrinter(hPrt);
except
Application.MessageBox(MSG_NO_PRINTER,pChar(Application.Title),MB_OK+MB_ICONERROR);
Result:=False;
Exit;
end;
Result:=True;
end;
到这里,打印设置已经完成了.但仍然有一个问题:
由于函数中调用了PRINTER对象.而在一个应用程序中PRINTER
只在第一次调用时创建.所以,你现在访问PRINTER对象的属性时,
它仍然是设置以前的值.
所以,你需要一个变量.
var
pTemp:TPrinter;
begin
pTemp:=TPrinter.Create;
with pTempdo
begin
//YOU CODE HERE
end;

pTemp.Free;

end;

//到此为止,大功告成!
 
配置打印机设置我知道用一个API函数documentproperites.
有那位朋友能给解释一下。特别是详细解释其中类型为PDEVMODE
的参数。
 
再一个就是我改变打印机的纸张主要用于报表预览, 请问在何时
改变比较合适?
 
关于PDEVMODE在《WIN32 程序员参考大全》中,有详细的说明。
如果你用的预览报表组件能方便的刷新的话,打印机设置就
可以放在预览窗口的菜单中;如果不行,就在主界面中加两个菜单项:]
打印设置和打印预览.
 

Similar threads

D
回复
0
查看
767
DelphiTeacher的专栏
D
D
回复
0
查看
809
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部