求教!!!FR打印问题。 |
尚未結案
|
xxiaowang
中階會員 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
我用的是Delphi Fastreport2.53,
因为只有一台EPSON LQ-680列印机,要作其它用途,其纸型也缺省为一自定义纸型,但我做这一程式是用A4纸列印。所以我想列印时动态改变列印机纸型为A4,并动态生成报表(有很多Page),列印完后再改回来,请见以下CODE,改变纸型使用Change_Paper。程式中调用两次Change_Paper,一次在Showreport之前,一次在frreport1的onprintreport事件中。结果是在Preview窗中:在ShowReport后纸型能正确显示为A4,但当按下列印后,Preview中的第一page变为此列印机的缺省自定义纸型,其它还是A4,为什么,请前辈指教? procedure TDM.Change_paper;
var
Device:array[0..cchDeviceName-1] of Char;
Driver:array[0..(MAX_PATH-1)] of Char;
Port:array[0..32]of Char;
hDMode:THandle;
pDMode:PDevMode;
begin
Printer.GetPrinter(Device,Driver,Port,hDMode);
if hDMode<>0 then begin
pDMode := GlobalLock(hDMode);
if pDMode<>nil then begin
pDMode^.dmPaperSize :=DMPAPER_A4;
pDMode^.dmFields:=pDMode^.dmFields or DM_PAPERSIZE;
ResetDC(Printer.Handle,pDMode^);
GlobalUnlock(hDMode);
end;
end;
end; procedure TF21.Preview(Sender: TObject);
var
i,j:integer;
Tempstr:string;
page:Tfrpage;
v:tfrview;
begin
dm.Change_paper;
with SQLQPrint do
begin
if active then close;
dataset.parambyname('PRODUCT_CODE').AsString:=CMBPCODE.Text;
open;
if (eof=bof) then Abort;
frreport1.Clear;
i:=0;
while not eof do
begin
frreport1.Pages.Add;
page:=frreport1.pages[i]
........
........
frreport1.showreport;
end;
end; procedure TF21.frReport1PrintReport;
begin
dm.Change_paper;
end;
|
xxiaowang
中階會員 發表:51 回覆:75 積分:55 註冊:2005-01-26 發送簡訊給我 |
|
jason
一般會員 發表:5 回覆:8 積分:2 註冊:2002-04-21 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |