历 历史的脐带 Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-11 #1 有谁做过像Word一样报告打印预览界面的吗?基本要求是能够实现分页,能够对打印对象随意编辑 我正在做这个,有些地方不能令人满意啊,希望有兴趣有经验的能够一起探讨探讨!
W wugwdelphi Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-11 #3 楼上说的也不错,但我的做法是直接输出成HTML,在WEBBROWSER中实现预览,打印设置,打印等功能,其好处是可以定义任何输出元素,如字体,字号,颜色,甚至由用户自己加入图片,可以编辑任一个单元格,可以产生任何复杂的表头,只是在分页上你要做点工作罢了,避开所有报表制作中头脑的问题.
楼上说的也不错,但我的做法是直接输出成HTML,在WEBBROWSER中实现预览,打印设置,打印等功能,其好处是可以定义任何输出元素,如字体,字号,颜色,甚至由用户自己加入图片,可以编辑任一个单元格,可以产生任何复杂的表头,只是在分页上你要做点工作罢了,避开所有报表制作中头脑的问题.
W wugwdelphi Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-11 #4 你可以想象,HTML语句可以完成的一切都可以由你的程序来提供给用户,呵呵,用户不可能要求一个fontpage,dreamewave来做报表吧.
历 历史的脐带 Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-11 #5 To wugwdelphi:如果仅仅是输出预览打印的话,用Html的确不错,而且也很美观。但是在预览界面上,该如何响应鼠标事件呢(对对象任意拖动、伸缩、编辑)?
G grwriter Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-11 #6 用构件来实现, Grid++Report就是不错的选择, 去 http://www.rubylong.cn 下载。
W wugwdelphi Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-12 #7 to 历史的脐带 :你要的东西可以参考frontpage和dreamwave是否实现了,你说的拖动,伸缩是随便做到的事,对于编辑当然只是一个input,textarea等元素的使用,你另外也可以参考现在网上很多自己做的网页编辑器,通常都是JS的,你弄来LINK到你的HTML页中不就得了,甚至更换背景,字体大小,颜色,贴图,线型,线的粗细,等等任何都可以变啊
to 历史的脐带 :你要的东西可以参考frontpage和dreamwave是否实现了,你说的拖动,伸缩是随便做到的事,对于编辑当然只是一个input,textarea等元素的使用,你另外也可以参考现在网上很多自己做的网页编辑器,通常都是JS的,你弄来LINK到你的HTML页中不就得了,甚至更换背景,字体大小,颜色,贴图,线型,线的粗细,等等任何都可以变啊
W wugwdelphi Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-12 #8 可以增加文件上传等等,此文件上传功能可以做成实现页眉,页脚上图片的上传等,你都不用写delphi代码,可以自己在html中用javascript写好一个网页编辑器,你的delphi程序只负责数据的填充就可以,数据的填充(<script>document.getElementById(yourelementid).value(或者innerText或者innerHTML)='你的值'</script>)你只需要打开文件用append方法向此文本文件增加以由内容就可以,由delphi或者由网页来控制打印.
可以增加文件上传等等,此文件上传功能可以做成实现页眉,页脚上图片的上传等,你都不用写delphi代码,可以自己在html中用javascript写好一个网页编辑器,你的delphi程序只负责数据的填充就可以,数据的填充(<script>document.getElementById(yourelementid).value(或者innerText或者innerHTML)='你的值'</script>)你只需要打开文件用append方法向此文本文件增加以由内容就可以,由delphi或者由网页来控制打印.
W wugwdelphi Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-12 #10 webbrowser的显示其实就是预览效果,只是你稍微计算一下字体对应,行高实现分页就可以了,最终只是打印网页嘛,你认为这有过多的分别吗,让用户在你显示的网页上做调整难道不比你在真正的预览界面上调整要好得多吗?也可以实现套打,HTML可以通过CSS控制打印输出的部分
webbrowser的显示其实就是预览效果,只是你稍微计算一下字体对应,行高实现分页就可以了,最终只是打印网页嘛,你认为这有过多的分别吗,让用户在你显示的网页上做调整难道不比你在真正的预览界面上调整要好得多吗?也可以实现套打,HTML可以通过CSS控制打印输出的部分
W wugwdelphi Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-12 #11 真正实现任意(我想IE认的图形格式在你的应用中应该够了吧)格式图形的输出,不必在DELPHI中读取不同图形文件时那么尴尬,到时又是这个控件那个控件一大堆,写起来也费事,我就遇到过用户要求程序可以从外面把图拖进来,然后要存入库中,并打印.用网页是一览子解决办法,事办而功倍,并且一直可以让这种技术继续下去,不必依赖于控件的更新.
真正实现任意(我想IE认的图形格式在你的应用中应该够了吧)格式图形的输出,不必在DELPHI中读取不同图形文件时那么尴尬,到时又是这个控件那个控件一大堆,写起来也费事,我就遇到过用户要求程序可以从外面把图拖进来,然后要存入库中,并打印.用网页是一览子解决办法,事办而功倍,并且一直可以让这种技术继续下去,不必依赖于控件的更新.
历 历史的脐带 Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-12 #12 恩,听你这么说的确不错!当初我怎么就没想到呢。。。。。。 我现在是做一个报告预览打印的组件,老板要求的功能差不多都实现,现在最让我头疼的是当我滚动鼠标滚轮时,预览界面上的对象在边界处有很大的托影,尤其当界面上对象比较多时。 我那些对象是放在一个链表里管理的,然后在paint事件里循环链表将对象画到画布上。wugwdelphi,对于这个拖影应该如何解决好呢?
恩,听你这么说的确不错!当初我怎么就没想到呢。。。。。。 我现在是做一个报告预览打印的组件,老板要求的功能差不多都实现,现在最让我头疼的是当我滚动鼠标滚轮时,预览界面上的对象在边界处有很大的托影,尤其当界面上对象比较多时。 我那些对象是放在一个链表里管理的,然后在paint事件里循环链表将对象画到画布上。wugwdelphi,对于这个拖影应该如何解决好呢?
W wugwdelphi Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-18 #13 在内存中存一份,显示时copy上来,鼠标滚动过程中不显示,只负责滚轮位置的计算,当滚轮停顿时,比如0.5S就显示到界面上,最好是有一个线程在内部计算,置一个公用变量为同步标志.
历 历史的脐带 Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-20 #14 在滚动过程中不显示?那界面上岂不是会有一段空白? 明天我试试。。。。。。。。。。 不过我看在c++里的处理过程也一样,但它滚动时就不会有拖影问题。不知道哪里没处理好 先画在内存,再copy到页面仅解决了闪烁问题,但拖影仍然是大大。
在滚动过程中不显示?那界面上岂不是会有一段空白? 明天我试试。。。。。。。。。。 不过我看在c++里的处理过程也一样,但它滚动时就不会有拖影问题。不知道哪里没处理好 先画在内存,再copy到页面仅解决了闪烁问题,但拖影仍然是大大。
历 历史的脐带 Unregistered / Unconfirmed GUEST, unregistred user! 2006-04-21 #15 问题解决了 是delphi鼠标滚动消息封装的不够好 谢谢了!日后多交流