全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1379
推到 Plurk!
推到 Facebook!

有關網路印表機列印速度問題

尚未結案
hungyulin
一般會員


發表:36
回覆:33
積分:13
註冊:2003-10-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-03-28 11:35:42 IP:61.219.xxx.xxx 未訂閱
客戶用一個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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-03-28 12:44:01 IP:221.226.xxx.xxx 未訂閱
这个好像有点困难的,你是否希望打印工作不要耽误用户的操作? 通常我解决这类问题都会将其方到一个线程中去,由线程去控制打印。
hungyulin
一般會員


發表:36
回覆:33
積分:13
註冊:2003-10-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-03-28 13:15:28 IP:61.219.xxx.xxx 未訂閱
引言: 这个好像有点困难的,你是否希望打印工作不要耽误用户的操作? 通常我解决这类问题都会将其方到一个线程中去,由线程去控制打印。
是的,請問要怎麼作呢?
Vicen
高階會員


發表:13
回覆:145
積分:151
註冊:2005-03-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-03-28 14:03:26 IP:221.226.xxx.xxx 未訂閱
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;    
以上代码只是一个架构,你可以按照你的需求改进。
系統時間:2024-04-25 0:18:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!