在一種列印機調好列印格式后,如果電腦切換了一個列印機后,或者換個其他列印機后,格式就全亂了。
所以想請教一下有什么方法可以不論什么列印機,總是在固定的地方列印內容
printer.BeginDoc;
printer.Canvas.Font.Style := [fsBold];
printer.Canvas.Font.Size := 22;
printer.Canvas.TextOut(80,iCol+20,'----用戶在線支付---');
printer.Canvas.Font.Style := [];
printer.Canvas.Font.Size := 14;
printer.Canvas.TextOut(30,iCol+60,'-----------------------------------------------');
printer.Canvas.Font.Style := [fsBold];
printer.Canvas.Font.Size := 22;
printer.Canvas.TextOut(30,iCol+80,jalist[iRow]['addr'].AsString);
printer.Canvas.TextOut(30,iCol+110,jalist[iRow]['cust'].AsString);
printer.Canvas.TextOut(30,iCol+130,jalist[iRow]['phone'].AsString);
printer.EndDoc;
uj5u.com熱心網友回復:
不同列印機的DPI不一樣啊,建議用fastreportuj5u.com熱心網友回復:
列印收銀小票嗎?如果是列印58MM的,都是差不多的uj5u.com熱心網友回復:
可以設計在一張紙上,列印 格式,一般不會亂。uj5u.com熱心網友回復:
1樓兄弟說的對,DPI不同就效果就不同,所以你要用列印控制元件幫你解決這個問題1、用FastReport、Report machine都可以,做一個列印格式,保存成檔案
2、每次列印前先加載格式檔案
3、對指定組件寫相應的值,然后列印
多張票就重復步驟3
uj5u.com熱心網友回復:
來這里的人越來越少了。uj5u.com熱心網友回復:
是的,列印小票,只有58和80,現在是排2個版來處理的。
再問你一下, 收銀小票上要列印圖片要怎么處理?
printer.Canvas.StretchDraw是列印不出來
uj5u.com熱心網友回復:
熱敏票劇列印機上打錢圖片要怎么處理啊。
uj5u.com熱心網友回復:
一張圖而已, 想怎么畫就怎么畫, 列印不出來不是列印機的問題, 你直接畫到bmp上看有沒有uj5u.com熱心網友回復:
可能你需要轉化為位圖即bmp格式才能列印出來。uj5u.com熱心網友回復:
這個問題是windows編程的經典問題呀,從我上高中時就見到有人問,見了不下30多次,我自己好像都回答過5+次,現在還有人問~~~

一句話回答就是:用StretchDIBits
要解釋一下為什么,那就是某些型別的DC(典型如列印機DC)可能不支持BitBlt、StretchBlt這種操作(實際上StretchDIBits也可能不支持,這種列印機應該是文本列印機,不支持列印圖形),你要用GetDeviceCaps檢查一下該DC的光柵操作支持能力
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/32609.html
標籤:VCL組件開發及應用
上一篇:哪位大神有 Delphi in Depth ClientDataSets 2nd Edition
下一篇:Java九九乘法表
