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

继承TPrinter新建了一个TNewPrinter但是Canvas.TextOut不能正常使用

尚未結案
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-21 15:27:05 IP:218.5.xxx.xxx 未訂閱
我的代码如下: TNewPrinter = class(TPrinter) private public constructor Create; destructor Destroy; override; procedure CanvasTextOut(X, Y: Integer; const Text: string); end; 但是使用Canvas.TextOut打印时提示EAccessViolation错误,但打印仍可能完成,只是有时提示EAccessViolation,但如果设断点跟踪却每次都出错. 我设计的目的是在新方法CanvasTextOut中使用,如下: 其中定义了两个常量: //24针打印机X,Y轴上的每英吋象素数 PixelsProIn24X = 180; PixelsProIn24Y = 180; procedure TNewPrinter.CanvasTextOut(X, Y: Integer; const Text: string); var diX, diY: integer; diPixelsProIn: integer; dsText: string; begin //为兼容9针打印机和24针打印机,做个转换 diPixelsProIn := GetDeviceCaps(Handle, LOGPIXELSX); if diPixelsProIn <> PixelsProIn24X then diX := Trunc(X * diPixelsProIn / PixelsProIn24X 0.5) else diX := X; diPixelsProIn := GetDeviceCaps(Handle, LOGPIXELSY); if diPixelsProIn <> PixelsProIn24Y then diY := Trunc(Y * diPixelsProIn / PixelsProIn24Y 0.5) else diY := Y; dsText := Text; Canvas.TextOut(diX, diY, dsText); end; 本以为是这种方法不对,但直接使用Canvas.TextOut也不行 a:= TNewPrinter.Create; a.Canvas.TextOut(10,10,'test'); //出同样的错误. 另外Create,Destroy如下处理: constructor TNewPrinter.Create; begin inherited Create; end; destructor TNewPrinter.Destroy; begin inherited Destroy; end; 请各位大大帮忙解决这个问题,小弟这里先谢过了. 發表人 - fangwy 於 2004/12/21 15:30:41
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-21 16:47:55 IP:218.5.xxx.xxx 未訂閱
为什么只有人看没人解答,是我描述的不清楚吗?
fangwy
中階會員


發表:99
回覆:139
積分:62
註冊:2003-09-10

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