線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2526
推到 Plurk!
推到 Facebook!

印表機如何使用逐行列印功能

 
dotdot
版主


發表:29
回覆:142
積分:64
註冊:2002-08-09

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-11 10:47:52 IP:211.22.xxx.xxx 未訂閱
很久以前在板板有提問過這樣的問題~因為向一般應用在像是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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-11 13:39:05 IP:211.74.xxx.xxx 未訂閱
不知道誰可以幫忙提供Delphi版本ㄋ??THANKS..< >< >
dotdot
版主


發表:29
回覆:142
積分:64
註冊:2002-08-09

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-11 17:41:35 IP:211.22.xxx.xxx 未訂閱
引言: 不知道誰可以幫忙提供Delphi版本ㄋ??THANKS..< >< >
程式仔細看其實還不算難 也是call API所以對DELPHI熟的翻過去應該不是大問題 呵呵只是我對DELPHI不熟
shankard
一般會員


發表:0
回覆:4
積分:0
註冊:2003-04-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-13 15:03:18 IP:61.70.xxx.xxx 未訂閱
請問可否列印中文?
dotdot
版主


發表:29
回覆:142
積分:64
註冊:2002-08-09

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-14 22:22:43 IP:61.70.xxx.xxx 未訂閱
well....< >抱歉中文我沒試過耶~不過原理應該差不多吧< >我猜的拉~可能要找找中文打印的相關資料再套進去試 最近忙著弄linux的東西>"< 會比較忙..有空再試試囉..或是你有找到比較好的方法也不吝分享呦~~< >< >
download
一般會員


發表:0
回覆:2
積分:0
註冊:2003-08-26

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-03-30 20:35:48 IP:61.61.xxx.xxx 未訂閱
感謝大大...現在正在做監控案子...剛好也有這個需求...
furbylin
一般會員


發表:6
回覆:29
積分:12
註冊:2003-08-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-02 17:19:55 IP:61.221.xxx.xxx 未訂閱
提供另一個簡單的方法:    
#include 
#include     void PrintLine(char *lc)
{
    ofstream ofs("PRN");        ofs << lc << endl;
}  
不過不能印中文字, 我試過dotdot的方法也不能列印中文(應該是文字模式列印, 而不是圖形模式的關係), 不知哪位前輩可以解決這個問題? 還是非買支援中文字型的點陣印表機才可解決? 可否賜教...
ph
一般會員


發表:3
回覆:27
積分:11
註冊:2003-09-28

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-05-14 17:56:19 IP:221.169.xxx.xxx 未訂閱
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; 山即是我 我即是山
------
學了這麼久還是沒進步
系統時間:2024-05-18 22:57:15
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!