印表機如何使用逐行列印功能 |
|
dotdot
版主 發表:29 回覆:142 積分:64 註冊:2002-08-09 發送簡訊給我 |
很久以前在板板有提問過這樣的問題~因為向一般應用在像是MonitorDevice需要24小時Report To Printer 而BCB本身提供的元件無法達逐行列印的需求(或許有可能我找的方法不對) 所以找了相關資料及實作一個簡單的範例給大家參考~ <<我們所預設假想環境及要求的功能:>>
1.可以假裝想像被監控端回傳字串訊息到程式內準備輸出至PRINTER.
2.訊息產生我們輸出至印表機只單印一行而不換頁,下次訊息產生就可以繼續列印.
3.所以結論是我們只知道每個字串訊息大概是多長 並不知道他會印多少頁 多少行.因為是"監控狀態".
4.列印過程不須顯示任何視窗 只求快就好<因為被控端可能短時間發生很多筆訊息>
5.自動取得印表機型號 //我有試過//////
OS: WIN98/ WIN2000/WIN XP
PRINTER:點陣EPSON LQ2080 / 噴墨EPSON color460 (當然雷射我也試過只是會強制換頁呵呵~一行一張)
附加檔案:28545_LbyLprint.zip
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
dotdot
版主 發表:29 回覆:142 積分:64 註冊:2002-08-09 發送簡訊給我 |
|
shankard
一般會員 發表:0 回覆:4 積分:0 註冊:2003-04-08 發送簡訊給我 |
|
dotdot
版主 發表:29 回覆:142 積分:64 註冊:2002-08-09 發送簡訊給我 |
|
download
一般會員 發表:0 回覆:2 積分:0 註冊:2003-08-26 發送簡訊給我 |
|
furbylin
一般會員 發表:6 回覆:29 積分:12 註冊:2003-08-29 發送簡訊給我 |
|
ph
一般會員 發表:3 回覆:27 積分:11 註冊:2003-09-28 發送簡訊給我 |
procedure TForm1.Button1Click(Sender: TObject);
Var st:String;
szPrinterName,szBuffer:PAnsiChar;
iLen:Integer;
dwWritten:DWORD; // 資料量多少
hPrinter:THandle;
Info: DOC_INFO_1;
szInfo:Integer; begin
st:='012345678901234567890AAAAAAAAAAAA' Chr(13) Chr(10);//0x0a換行(carriage)
szPrinterName:=Pchar(edit1.Text); //印表機名稱 szBuffer:=Pchar(ST);
iLen:= strlen(szBuffer);// 要列印傳送資料的長度
IF OpenPrinter(szPrinterName, hPrinter, nil) then begin
szInfo:=sizeof(Info);
Info. pDocName:= 'The Test Print';
Info.pOutputFile:= nil;
Info.pDatatype:= 'RAW';
end
else
begin
Showmessage('Not Open Printer!');
exit;
end; // 開啟列印
StartDocPrinter(hPrinter, 1, @Info); StartPagePrinter(hPrinter); // 開啟列印頁傳入指定的列印行HANDLE
if Not WritePrinter(hPrinter, szBuffer, iLen, dwWritten) then
begin
ShowMessage('列印錯誤');// 寫入錯誤
end; EndPagePrinter(hPrinter);//完成結束列印頁 if Not EndDocPrinter(hPrinter) then
ShowMessage('關閉錯誤'); ClosePrinter(hPrinter);//關閉列印行程
Memo1.Lines.Add('012345678901234567890AAAAAAAAAAAA');
end; 山即是我 我即是山
------
學了這麼久還是沒進步 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |