有關網路印表機列印速度問題 |
尚未結案
|
hungyulin
一般會員 發表:36 回覆:33 積分:13 註冊:2003-10-15 發送簡訊給我 |
客戶用一個port的Print Server接了一台熱感式印表機來列印菜單,我用下面的方式列印資料,可是只要是有列印菜單,程式就會停到等菜單印完才會繼續往下,每筆可能要等個十多秒左右才會跳回點餐的畫面,請問有沒有別的方法可以加快速度,或者有沒有可能可以在背景中列印,讓程式可以不要等到菜單印出來才可以繼續往下走?
With printer do begin
BeginDoc;
Canvas.Font.Size := 16;
Canvas.Font.Name:='標楷體';
for i:=0 to DataList1.Count-1 do
CanVas.TextOut(10, 10 i*40, DataList1[i]);
EndDoc;
end;
|
Vicen
高階會員 發表:13 回覆:145 積分:151 註冊:2005-03-14 發送簡訊給我 |
|
hungyulin
一般會員 發表:36 回覆:33 積分:13 註冊:2003-10-15 發送簡訊給我 |
|
Vicen
高階會員 發表:13 回覆:145 積分:151 註冊:2005-03-14 發送簡訊給我 |
Var LsPrint : TStringList;//全局变量 建立一个打印执行序。建立一个全局变量,我不知道您具体打印内容及要求, 所以使用一个STRINGLIST来存储用户需要打印内容的任务。 TPrintThread = class(TThread) private procedure tStartPrint; protected procedure Execute; override; public constructor Create; destructor Destroy; override; end; 在启动时建立线程,该线程用来监听是否有任务需要进行打印。 建立方法: TPrintThread.Create; {------------------------------------------------} 线程内容如下 {------------------------------------------------} 编写线程建立事件: Constructor TPrintThread.Create; begin inherited Create(Suspended); FreeOnTerminate := True; end; procedure tStartPrint; Var CurPrintMemo : String;//本次打印内容 begin CurPrintMemo := LsPrint.Strings[0]; LsPrint.Delete[0]; With printer do begin BeginDoc; //......你需要打印的内容放这里 EndDoc; end; end; Execute是開始執行線程 procedure TPrintThread.Execute; begin try While Not Terminated do begin if LsPrint.Count>0 then begin Synchronize(tStartPrint); Sleep(5000);//每5秒钟检查是否有打印任务下达。 end else begin application.ProcessMessages; Sleep(10000);//没有打印任务,所以等待10秒 end; end; except // end; end;以上代码只是一个架构,你可以按照你的需求改进。 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |