fr的自定义纸张问题(100分)

  • 主题发起人 主题发起人 zzjat
  • 开始时间 开始时间
Z

zzjat

Unregistered / Unconfirmed
GUEST, unregistred user!
自已写了个订单系统,要打印成2160X1400的单据格式,所以我把打印机纸张设成自定义,但是同时要运行另一个系统,它会在程序中把自定义纸张改成1600X1400,这样,每次用我的订货系统之前要手动更改自定义纸张,让用户觉得不爽。所以我要在程序中把纸张定义成
2160X1400。但是我不知道怎么设置 :(
这是系统运行在98中的状况,如果用户使用的是W2K的话?又该怎么办?
 
我有在win2k,winxp下的自定义纸张程序,要不要试试.?
留个Email给你发一份...
 
建议你使用CReport4
 
lglhsy:zzjat@163.net
不胜感激!!!
 
Email已发...(zzjat@163.net)
 
lglhsy:有没有源代码提供?若分不够,另开贴加分,多谢!
 
有源代码提供,加多100分就给。。。
 
fr 2.4自定义纸张与打印有关,有的打印机有,有的就没有。
建议使用Report Machine这个控件,这个控件是FR的改良版。
不管什么打印机,都可以自定义纸张。
从前人家的答案,但我找了一下,也发现有些人重装一遍驱动也能解决问题的。
我自己用的时候,是在win2k下,也是自定义,但没发生你所说的问题,我的打印机是联想的网络打印机。
 
lglhsy:分怎样给你?
昨天测了一下,订货系统在win2k下运行,网络打印机在98下,打印机自定义纸张怎么样设置,都可以打印出订货系统中以定义好的纸张,而在98下运行订货系统时,无论写什么代码
都是按打印机的设置来打印(订货系统在w2k下开发)
不知道为什么?我试过很多代码,都不行。以下是一段:
procedure TOrderKeyInFrm.setprintpaper(const w,h:integer);//w:宽度 h:高度
var
Device : array[0..255] of char;
Driver : array[0..255] of char;
Port : array[0..255] of char;
hDMode : THandle;
PDMode : PDEVMODE;
reg:tregistry;
begin
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(Device, Driver, Port, hDMode);
if hDMode <> 0 then
begin
pDMode := GlobalLock(hDMode);
if pDMode <> nil then
begin
{Set to legal}
pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
pDMode^.dmPaperSize := DMPAPER_LEGAL;
{Set to custom size}
pDMode^.dmFields := pDMode^.dmFields or
DM_PAPERSIZE or
DM_PAPERWIDTH or
DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth :=w;
pDMode^.dmPaperLength :=h;
{Set the bin to use,以下写到注册表中是为了永久改变打印机纸张,但在win2000下无效,我也想知道}
reg:=tregistry.create;
reg.rootkey:=hkey_local_machine;
reg.OpenKey('/system/currentcontrolset/control/print/printers/'+pdmode.dmDeviceName,false);
reg.WriteBinaryData('Default DevMode',pdmode^,pdmode^.dmsize+pdmode^.dmdriverextra);
reg.closekey;
reg.free;
pDMode^.dmFields := pDMode^.dmFields or DMBIN_MANUAL;
pDMode^.dmDefaultSource := DMBIN_MANUAL;
GlobalUnlock(hDMode);
end;
end;
Printer.PrinterIndex := Printer.PrinterIndex;
end;
 
没这么复杂 Fr中的 file-pagesetup中的 高,宽写上就ok了,还用管它什么打印机!
 
多人接受答案了。
 
后退
顶部