连续打印怎么打? |
尚未結案
|
clarky
一般會員 發表:14 回覆:22 積分:7 註冊:2003-04-17 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
|
clarky
一般會員 發表:14 回覆:22 積分:7 註冊:2003-04-17 發送簡訊給我 |
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
自設打印機紙張大小(在98下測試無誤,可用)
procedure PrnSetPaperSizeNT(FormName: string; PaperWidth, PaperLength:integer);
var Device, Driver, Port: array[0..80] of Char;
DevMode: THandle;
pDevmode: PDeviceMode;
begin
// Get printer device name etc.
Printer.GetPrinter(Device, Driver, Port, DevMode);
// force reload of DEVMODE
Printer.SetPrinter(Device, Driver, Port, 0) ;
// get DEVMODE handle
Printer.GetPrinter(Device, Driver, Port, DevMode);
if DevMode <> 0 then begin
// lock it to get pointer to DEVMODE record
pDevMode := GlobalLock( DevMode );
if pDevmode <> nil then
try
with pDevmode^ do begin
// modify form
StrLCopy( dmFormName, PChar(FormName), CCHFORMNAME-1 );
// tell printer driver that dmFormname field contains
// data it needs to inspect.
dmPaperWidth := PaperWidth;
dmPaperLength := PaperLength;
dmFields := dmFields or DM_FORMNAME or DM_PAPERWIDTH or DM_PAPERLENGTH;
end;
finally
GlobalUnlock( Devmode ); // unlock devmode handle.
end;
end; { If }
end; begin
...
...
printer.printerindex:=-1 ; // 設置預設打印機(或者你自己改為想要打印的打印機)
PrnSetPaperSizeNT('自定義',579,maxlength); // 數值皆為dot
printer.begindoc;
..
printer.enddoc;
end; 1、自設打印機紙張長度(長度為那個canvas.height)
2、需手動設置打印機的圖形抖動(在控制面板里設置)為無,否則將會有無法預期的結果(長度亂了)
|
japhenchen
高階會員 發表:51 回覆:444 積分:184 註冊:2003-07-23 發送簡訊給我 |
|
clarky
一般會員 發表:14 回覆:22 積分:7 註冊:2003-04-17 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |