如何使屏幕内容与报表内容一致?(200分)

  • 主题发起人 主题发起人 okmy
  • 开始时间 开始时间
O

okmy

Unregistered / Unconfirmed
GUEST, unregistred user!
我用RB6.02做报表,有一问题:
在屏幕上58个W与78个w的长度一致,但在报表中78个w的长度远大与58个W.
字体已设一样.
why?
我想可能是因为屏幕与Printer的分辨率不一致,但如何解决?
 
这个需要自己写一个过程,在Printer.begin
Doc之后调用就可以了,这个函数我原来有的,
不过现在不在手边:(
 
kingron:我用RB6.02做报表,不是直接输出.
 
用FASTREPORT!RB太大了!
 
yangjj:RB有它的优点,况且我一直用RB,我想我的问题在每个报表工具也有吧?
 
对呀
在windos中各种设备都有自己的分辨率
当然是不同了
最好进行一下转换
 
不知道是否有源代码?有的话,就自己改了~~`:),没有的话,可以用FastR,有源代码可以改。
 
Kingron:有源代码又如何改?
 
就是你自己查找begin
Doc,然后在后边添加那个过程就可以了。
 
Kingron:请问加上什么过程?可否详细指教?
 
除了上述情况,还有:
屏幕:
INNER BOX MASTER BOX QTY COLOR ITEMNO PONO REMARK
--------- ---------- --- ----- ------ ----- ----------------------------
34do
Z 512do
Z 100 RED 00080001 0001 THIS IS TEST TEXT
打印却变成:
INNER BOX MASTER BOX QTY COLOR ITEMNO PONO REMARK
------- ---------- --- ----- ------ ----- ----------------------------
34do
Z 512do
Z 100 RED 00080001 0001 THIS IS TEST TEXT
如何解决?
 
用begin
doc enddoc printer.textout(),打印预览和打印共用大部分代码,屏幕分辨率不同,
打印预览显示的长度也不同,why?
 
老兄,同路人,居然4点还没睡觉!
 
to all:问题已解决.但无人有正确答案,此分如何分配请版主帮忙搞掂.
 
不知道你是怎么解决的,刚好找到到了一些资料,就是我以前所的那个函数:
如何在不同的打印分辨率下面打印?
下面给出一个函数,在调用这个函数之后,你就可以使用Font.Size来设置字体的大小而与打印机分辨率无关了。
注意必须在Printer.begin
Doc之后调用这个函数!
{-------------------------------------------------------------
Sets the logicaldo
ts per inch for the printer and sets the printer axes to point RIGHT anddo
WN. Thus (0,0) is at the top left corner of the page. Returns the page size in logical coordinates.
Note: Must be called AFTER Printer.begin
Doc.
--------------------------------------------------------------}
function SetPrinterScale(dpi : integer) : TPoint;
var
DeviceDpiX, DeviceDpiY : integer;
begin
with Printerdo
begin
SetMapMode(Handle, MM_ISOTROPIC);
SetWindowExt(Handle, dpi, dpi);
DeviceDpiX := GetDeviceCaps(Handle, LOGPIXELSX);
DeviceDpiY := GetDeviceCaps(Handle, LOGPIXELSY);
SetViewPortExt(Handle, DeviceDpiX, DeviceDpiY);
Result := Point(PageWidth, PageHeight);
with Canvasdo
begin
DPtoLP(Handle, Result, 1);
{ This API call is required... }
Font.PixelsPerInch := DPI;
{ ...to make this work. (Who knows why?) }
end;

end;
end;
 
好的解决办法是不可能有的,但是改变分辨率是一个可行的方法
 
答案其实没有那么复杂,对于RB等报表工具应该也考虑了分辨率的问题,
我只是改变了字体及大小(当然挺气人的,8号,12号都不行,10号就ok!).
 
后退
顶部