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

請問動態切換印表機, 列印出來字體破碎

尚未結案
spencerkuo
一般會員


發表:21
回覆:34
積分:11
註冊:2003-08-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-23 16:32:51 IP:61.57.xxx.xxx 未訂閱
各位大大求救 請問 我動態create Tprinter 結果在列印的時候 (可以看我的source), 我是用動態的資料列印到各不同的印表機 但是如果切換列印太快的話, 列印出來的字會破碎 還有如果列印太長後面列印出來的行距會越來越大 聽說這是delphi的tprinter 的bug 可否介紹幾個比較好的printer 元件用用, 因為這樣列印出來真的是到了不能接受的程度了 我的程式碼如下 var myprinter : Tprinter; str :string; i, j, v : integer myprinter := Tprinter.create; if astring.Count > 9 then for j := 1 to myPrinter.Printers.Count do if uppercase(myPrinter.printers[j-1])= uppercase(cdsTemp2.fieldbyname('name').asstring) then begin myPrinter.PrinterIndex:=j-1; with myprinter do begin BeginDoc; Canvas.Font.Name:='細明體'; Canvas.Font.size:=10; for i := 0 to astring.Count-1 do begin str := astring[i]; v := 0 (i * Canvas.TextHeight(astring[i])); Canvas.TextOut(0,v,str); EndDoc; end; end; myprinter.free;
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-27 16:11:06 IP:147.8.xxx.xxx 未訂閱
引言:列印出來的字會破碎
class="code">v := 0; for i := 0 to astring.Count-1 do begin str := astring[i]; Canvas.TextOut(0,v,str); inc(v,Canvas.TextHeight(astring[i])); EndDoc; end;
shieh2700
高階會員


發表:0
回覆:127
積分:100
註冊:2002-06-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-27 20:05:21 IP:61.216.xxx.xxx 未訂閱
1. EndDoc 的位置似乎怪怪的 2. begin 與 end 似乎無法匹配(不成對) 3. 由程式內容看來, 應該只會輸出至其中一台印表機 (這功能看來很眼熟, 你是寫 F&B 系統的嗎?)    僅供參考...
const
  pName : String = 'FinePrint'; //測試印表機
var
  aStr  : TStrings;  //輸出資料
  i     : Integer;   //計數器
  v     : Integer;   //縱座標
  pIdx  : Integer;   //印表機序號
  pFont : TFont;     //輸出字體
begin
  //測試資料 Begin //
  aStr := TStringList.Create;
  for i := 0 to 10 do
    aStr.Add( '[' IntToStr(i) ']TEST' );
  //測試資料 End   //      pFont := TFont.Create;
  pFont.Name := '細明體';
  pFont.Size := 30;      if aStr.Count > 9 then begin
    pIdx := Printer.Printers.IndexOf( pName );
    if pIdx > -1 then begin
      with Printer do begin
        PrinterIndex := pIdx;
        BeginDoc;
        Canvas.Font := pFont;
        v := 0;
        for i := 0 to aStr.Count-1 do begin
          Canvas.TextOut( 0, v, aStr[i] );
          Inc( v, Canvas.TextHeight( aStr[i] ) );
        end;
        EndDoc;
      end;
    end;
  end;
  pFont.Free;
  aStr.Free;
end;
系統時間:2024-06-26 12:48:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!