sos 紧急求助!!!
yp 2001-03-08 09:26:00 本人第一次使用开发一套软件其它功能皆已完备,可报表打印部份出问题?
我使用EREPORT开发报表部份,报表设计好后,就没有打印过,可是进入
应有程序后,报表的纸张设置在程序中只能设置一次,如:当我第一次打印
A4 的横向报表时正确,当接着打印A4的纵向报表时,打印机仍是打出横向
报表;关闭应用软件,重新进入,第一次打印A4的纵向报表时,可以,可接
着打印A4 的横向报表时,仍是纵向打印。我不知道应该怎么办,应用程序
下午就要上交了,请各位快支招吧!
我在打印报表前,都是调用如下过程:
procedure readyprin(paper:String;orien:Integer);
var
ADevice,ADriver,Aport:Array [0..255] of char;
DeviceHandle:THandle;
DevMode:PdeviceMode;
begin
Printer.GetPrinter(ADevice,ADriver,Aport,DeviceHandle);
if DeviceHandle=0 then begin
Printer.PrinterIndex:=Printer.PrinterIndex;
printer.GetPrinter(ADevice,ADriver,Aport,DeviceHandle);
end;
if DeviceHandle=0 then
raise Exception.Create('Could not Initialize TDeviceMode structure')
else
devMode:=GlobalLock(DeviceHandle);
devMode.dmFields:=DevMode.dmFields or DM_ORIENTATION;
if orien =1 then //纵向打印
devMode.dmOrientation:=DMORIENT_PORTRAIT
else //横向打印
devMode.dmOrientation:=DMORIENT_LANDSCAPE;
devMode.dmFields:=DevMode.dmFields or DM_PAPERSIZE;
if paper='A4' then
DevMode.dmPaperSize:=DMPAPER_A4;
if paper='A3' then
DevMode.dmPaperSize:=DMPAPER_A3;
if paper='16K' then
DevMode.dmPaperSize:=DMPAPER_P16K;
if paper='32K' then
DevMode.dmPaperSize:=DMPAPER_P32K;
if paper='USER' then
DevMode.dmPaperSize:=DMPAPER_USER;
end;