套打的字体变小?(50分)

  • 主题发起人 主题发起人 lzb
  • 开始时间 开始时间
L

lzb

Unregistered / Unconfirmed
GUEST, unregistred user!
用Qreport做一套打表格,表格的式样在Qreport中已定义好了,

QuickRep1.Page 为 custom;
QuickRep1.Page.length=200;
//mm
QuickRep1.Page.width=150;

打印时如下:

SetPaperSize(1500,2000);//0.1mm
Form1.QuickRep1.Prepare;
Form1.QuickRep1.Printer.Print;

在打印前自定义纸张,程序如下:

Form1.SetPaperSize(X,Y:integer);
var
Device: array[0..255] of char;
Driver: array[0..255] of char;
Port: array[0..255] of char;
hDMode: THandle;
PDMode: PDEVMODE;
begin

Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(Device, Driver, Port, hDMode);
if hDMode <> 0 then

begin

pDMode := GlobalLock(hDMode);
if pDMode <> nil then

begin

if (x = 0) or (y = 0) then

begin

pDMode^.dmFields := pDMode^.dmFields or dm_PaperSize;
pDMode^.dmPaperSize := DMPAPER_FANFOLD_US;
end
else

begin

pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE or
DM_PAPERWIDTH or DM_PAPERLENGTH;
pDMode^.dmPaperSize := DMPAPER_USER;
pDMode^.dmPaperWidth := x ;
pDMode^.dmPaperLength := y;
end;


GlobalUnlock(hDMode);
end;

end;

Printer.PrinterIndex := Printer.PrinterIndex;


end;


打印可以,但字小得用放大镜恐怕也看不清!
我看过一些有关坐标变换之类的例子,但问题是我的套打格式是在Qreport中搞的,
这这么办???

 
改变打印机的分辨率
 
亲爱的lzb:
你走错路了。你已经忘记了Delphi的面向对象的要点了。
你为什么不在Qreport中放上QRDBText、 QRDBLabel等控件后,直接设它们的
Font等属性呢?这样可以Preview,方便又快捷地调节各控件显示的大小与位置。
用代码设属性在这里可不是一个好方法呵。
根本就不用Print,不用运行就可以看到结果了。至少快5倍。
我一直都是这样做的。
我在设计一个有套的数据库应用程序时,只用了不到两天就交货了。这就是RAD
 
根据打印机分辩率X、Y和坐标比例,来定义大小(取分辩率必须用API函数,自己去翻书吧,我也忘了)
 
再加100分
 
接受答案了.
 
后退
顶部