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

動態create Tprinter的問題

尚未結案
spencerkuo
一般會員


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-04-22 19:45:15 IP:202.133.xxx.xxx 未訂閱
各位大大求救 請問 我動態create Tprinter 結果在給 canvas.textout 的時候發生error 我的程式碼如下 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 Canvas.TextOut(0,0 (i * Canvas.TextHeight(astring[i])),astring[i]); EndDoc; end; end; myprinter.free; 謝謝 發表人 - spencerkuo 於 2004/04/22 19:50:15
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-04-22 19:52:45 IP:202.39.xxx.xxx 未訂閱
Printer 不用自己 create 只要 uses Printers 然後就可以用了 參考 TPrinter 的 help 中的一段:    Use TPrinter to manage any printing performed by an application. Obtain an instance of TPrinter by calling the Printer function in the Printers unit.    
if astring.Count > 9 then
  for j := 1 to Printer.Printers.Count do
    ...
發表人 - hagar 於 2004/04/22 19:59:21
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-04-22 19:57:38 IP:211.20.xxx.xxx 未訂閱
spencerkuo 你好
textout部份改成如下方式
Var
  y:Integer ;
Begin
......
  y := 0   (i * Canvas.TextHeight(astring[i]));
  Canvas.TextOut(0,y,astring[i]);
.....
end;
spencerkuo
一般會員


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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-04-22 19:57:54 IP:202.133.xxx.xxx 未訂閱
引言: Printer 不用自己 create 只要 uses Printers 然後就可以用了
if astring.Count > 9 then
  for j := 1 to Printer.Printers.Count do
    ...
因為我資料是印表機快速切換 所以 canvas 會錯亂掉 所以必須要動態create printer 發表人 - spencerkuo 於 2004/04/22 20:01:32
spencerkuo
一般會員


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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-04-22 20:05:07 IP:202.133.xxx.xxx 未訂閱
引言: spencerkuo 你好
textout部份改成如下方式
Var
  y:Integer ;
Begin
......
  y := 0   (i * Canvas.TextHeight(astring[i]));
  Canvas.TextOut(0,y,astring[i]);
.....
end;
這樣的做法也是依樣耶, 會有error
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-04-22 20:19:01 IP:211.20.xxx.xxx 未訂閱
spencerkuo 你好
  不好意思,改錯了
Var
  Str:String;
  y : Integer ;
Begin
......
  Str :=astring[i] ; // 主要是這行
  y := 0   (i * Canvas.TextHeight(str));//
  Canvas.TextOut(0,y,Str);
.....
end;
發表人 - chance36 於 2004/04/22 20:21:33
spencerkuo
一般會員


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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-04-23 15:54:58 IP:61.57.xxx.xxx 未訂閱
引言: spencerkuo 你好
  不好意思,改錯了
Var
  Str:String;
  y : Integer ;
Begin
......
  Str :=astring[i] ; // 主要是這行
  y := 0   (i * Canvas.TextHeight(str));//
  Canvas.TextOut(0,y,Str);
.....
end;
發表人 - chance36 於 2004/04/22 20:21:33
謝謝chance36 可以過了, 但是現再又有一個問題 可以看我的source, 我是用動態的資料列印到各不同的印表機 但是如果切換列印太快的話, 列印出來的字會破碎 還有如果列印太長後面列印出來的行距會越來越大 聽說這是delphi的tprinter 的bug 可否介紹幾個比較好的printer 元件用用, 因為這樣列印出來真的是到了不能接受的程度了 謝謝
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-04-23 16:15:15 IP:211.20.xxx.xxx 未訂閱
引言: 可否介紹幾個比較好的printer 元件用用,
spencerkuo 你好 這點我就無法提供資料給你了,因為我也只有在學習階段使用過 Tprinter,之後就從來沒用過了 ,看看其他大大是否可以提供??
系統時間:2024-06-01 15:27:45
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!