首先你可能没理解屏幕DC和打印机的关系。
屏幕DC是严格的打印的点阵的对应。
而且这个DC对应的画布的大小和打印机的打印分辨率有密切的关系。300*300DPI和600*600DPI的时候连个DC对应的画布也是长宽各差一倍的。我用的这个大银鱼似的方法可以说是个偏门。1.设定这个缩放比例预览的时候一定要在预览生成后恢复原来的数值,这样才不影响打印。具体方法
GetPrintScale 取得当前的数值保存
SetPrintScale 设定新的大小为了预览
PrintPreviewDC 生成预览
SetPrintScale 恢复原来的比例2.由于你设定了新的放缩比例,会导致一个问题就是页数的计算会变化,比喻你缩放了50%,那么原来是10页的内容现在其实就只需要5页了,这违背了我们的目的,所以我的建议是同样在预览前修改纸张的大小,按照于是的比例缩小当前的纸张大小。同上面一样,预览生成后要恢复原来的内容。3.预览的大小还受到打印分辨率的影响,所以计算预览效果的时候一定要得到当前的分辨率,并把此参数引入的预览画面生成的计算中取。
int GetDeviceCaps(
HDC hdc, 
int nIndex);下面是BCB代码得到当前打印机的水平和垂直分辨率
GetDeviceCaps(Printer()->Canvas->Handle, LOGPIXELSX);
GetDeviceCaps(Printer()->Canvas->Handle, LOGPIXELSY);4.我的另一个想法,
如果能设定当前打印机的分辨率,或者模拟一个打印机,把他的分辨率设为和屏幕一样,那么就可以直接在一个DC上面直接用了,没什么比例的概念了。
想调整预览的放缩倍数只要修改这个打印机的分辨率就行了。100%的情况就是
把打印机的分辨率设定为96*96dpi (window小字体),
这个办法我一直没成功。关注你的进展。
谢谢,共同探讨。

解决方案 »

  1.   

    是呀,那里有F1Book6,如果真有所改建的话,哪做报表的问题就好解决多了
      

  2.   

    你到网上搜索关于formula one的文章,很多!
      

  3.   

    大家帮忙看一下这个:
    http://www.csdn.net/expert/topic/822/822284.xml?temp=.7585108
      

  4.   

    你好
        我是专门做Delphi下报表的,你可以到我的网站上下载Demo.我的控件使得 对各种复杂表格制作都变得非常简单!我是在F1book的基础上开发的TF1bookdraw控件.报表的右键菜单中可以提供调整列宽,保存列宽,将报表保存到Excel文件中的完全功能!看看我的demo吧,你会大吃一惊的!
         我的控件一定在你的想象之中!我的预览也非常专业!并且可以自己管理一个工程中所有的报表!
        delphi程序动态制作报表尽在: http:\\zhangxzh.diy.163.com
      

  5.   

    我的网址中的反斜扛错了!
       应为 http://zhangxzh.diy.163.com
                  zhangxzh!
      

  6.   

    pazee(耙子),很抱歉,最近太忙了,前段时间还病了两个星期,没时间去深入研究。
    用PrintPreviewDC预览的时候,并不像PrintPreviewEx一样,在预览界面出现一个边框,显示实际打印的时候打印的面积,好像也不会处理分页的情况,或者我不知道该怎么做。但是,如果预览的效果和打印的效果不一样的话,那这种预览有什么用吗?
    希望有用过的人指点一下,真不知道zhangxzh(报表之王) 是怎么做的预览。这个问题放的时间很长了,如果到这个周末还没有进一步的话题的话,我准备结贴了,毕竟,这是我在csdn提的第一个问题。
      

  7.   

    pazee(耙子),很抱歉,最近太忙了,前段时间还病了两个星期,没时间去深入研究。
    用PrintPreviewDC预览的时候,并不像PrintPreviewEx一样,在预览界面出现一个边框,显示实际打印的时候打印的面积,好像也不会处理分页的情况,或者我不知道该怎么做。但是,如果预览的效果和打印的效果不一样的话,那这种预览有什么用吗?
    希望有用过的人指点一下,真不知道zhangxzh(报表之王) 是怎么做的预览。这个问题放的时间很长了,如果到这个周末还没有进一步的话题的话,我准备结贴了,毕竟,这是我在csdn提的第一个问题。
      

  8.   

    最近也是比较忙,程序没开发完呢,没太深入继续研究。但这个问题我一定要解决,因为用到了他。
    我还发现excel也偶尔会出现缺线的问题。目前为止,我发现了3个人都实现了预览,而且都不错,有一个免费的,但是没找到下载。我稍后会继续研究,等有结果了一定给你源代码, 也关注你的进展。这东西没啥可保密的。
      

  9.   

    大家好:
         我的预览完全是重新开发的,因为F1book的自带预览太次了.而且在F1book基础上开发的新控件又容进了一种新的报表开发思想,完全撇开了原来的报表开发思想.看看demo,可以看到,我的报表都是用程序实现的,方便快捷,又集成了很多的东西.我希望大家向自己所在的公司推荐我们的控件! 很感谢的! demo在不断的更新,希望您下载最新的demo.
      

  10.   

    买你的还不如买cell4.2呢,
    他的更好。
      

  11.   

    不就F1book么,我有,6.0的,5.0的也有,
    没有6.0的好用,
    >我的预览完全是重新开发的,因为F1book的自带预览太次了.
    就这个,我靠,这还叫开发??
    其实,大家都把打印预览想的太复杂了,看看中国式报表的源代码吧,
    你注意看一看什么什么之王的,预览上面的内容和前一页内容不是完全一样么?
    又不能放大,缩小,有什么了不起,就一个VB程序而已,
    我以前公司里有个哥们用这么东西,用了几年,我又得到一个更好的,于是没学
    那个更好的,有一点像瑞软表单
    其实,cell也没有瑞软表单好用,不过,这东东太贵了他也就把这两个看了一看,就想钱!,你是不是快穷死了
    上面的东东,哪 个想要,
    我留下Email
    交个朋友!!!!!!!!
    6.0的/F1book和中国式报表的源码谁要呀,100分钱就拿了,没有钱,给点分嘛,以表热情呀
      

  12.   

    对了,要的朋友说一下,什么时候在线,得在白天,要是在家我可没办法,
    我把F1book,用RAR2.9打几个包,分几次,你可得快点收,要是让我发几天,我可受不了,
    或者找一个20M的信箱更好,一次搞定
      

  13.   

    问题是要向公司推荐你个人的控件!
    又没有F1book的版权,要是真的用了,你能承担这个责任么,
    要是卖给个人,那他愿意花多少钱又是另一个问题了,F1book的使用这个问题,我们都知道, 我们没有F1BOOK的原码,只是利用他上面的东西在加工,如果F1不支持的,你也做不到,但公司用什么东西是要经过很多考虑的,你这样做,
    真有人买了你的东西,你又不能解决使用权问题,
    你不是害了人家么?
    如你是F1book 的开发者之一那我要说,我错了,错怪你了,
    我有眼不识泰山!
    F1book的开发者,你还是把F1book直接改一下吧
    我们用起来也省省力气
      

  14.   

    To dearmite(我是笨笨!):上传到www.playicq.com或者delphi.mychangshu.com上去吧,大家都能下载。如果不方便,你可以给我发过来,然后我给上传上去:[email protected]
      

  15.   

    给我个打印预视的代码吧.
    [email protected]
      

  16.   

    我的信箱是[email protected]
    你把passwd给我,我上传上去,,
    sina的接不了那么大,其实这个东西在我手上有两年了,我一直没研究它,
    希望大家以后能在一起共同研究研究,
    对F1book感 兴趣的能留个Mail么,
    pazee(耙子)
    我把中国式报表的源码也放上去,
      

  17.   

    pazee(耙子)
    我把中国式报表的源码发给你了,
    对了,如要这个的朋友,先给我一个Mail,
    因为这个不大,(原码DELPHI里用的控件+一个画的程序)
    我一个一个地发有点费事,
    但回复一个就很快了,
    请大家见谅!
    另:有没有对CELL感兴趣的,???
    我有一个英文版,3.1的吧,好长时间了,好几年了,我忘了,
    不是现在的演示版,可以打印的,谁要,也给我发一个Email吧,
    交个朋友,我没有版权,你可以研究,用不用于商业,我无权,
    我只是向朋友们做一点有用的事情
    F1book和CELL是一类的,不过CELL是中国人开发的,另外小一些
    也好看一点,(个人观点)
    但我还是觉得瑞软的FSCELL好,
    关键是它能让你在文件中(这也是CELL一类报表器的特点)写脚本,
    也就是说,你以后改报表的时候,和主程序是无关的,改改脚本就行了,
    我用过试用版,以后到了别的公司,不做报表这一块了,
    对它也淡化了从性能价格比上(我们用得放心,钱少)的F1book和中国式报表算最好的了
    F1book很多公司在用,(都不是大公司)中国式报表有原码而且是公开,
    王寒松大侠真是
    随你怎么用,怎么改,
    同时也请某些人看看大侠的作风!
    !!!!!
      

  18.   

    4.我的另一个想法,
    如果能设定当前打印机的分辨率,或者模拟一个打印机,把他的分辨率设为和屏幕一样,那么就可以直接在一个DC上面直接用了,没什么比例的概念了。
    想调整预览的放缩倍数只要修改这个打印机的分辨率就行了。100%的情况就是
    把打印机的分辨率设定为96*96dpi (window小字体),
    这个办法我一直没成功。好象不行,因为许多你在WORD下看得不是很清的东西,(如公式)别人会说打出来就好了,为什么,就是分辨率高么,现在的打印机打出来的很好看的东西,
    把打印机的分辨率设定为96*96dpi那还了得了
    那打得就太难看了吧,
    我们以前做得很EASY,只是把VIEWPORT改一下而已,就实现了打印预览,而同时实现了放大和缩小,你可以试试