说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

也谈为Delphi中数据库报表加网格

HTML文档下载 WORD文档下载 PDF文档下载
也谈为Delphi中数据库报表加网格

看了贵报第63期《为Delphi 3.0中数据库报表加上网格线》一文,笔者发现原文中的程序在不同分辨率的打印机(如180dpi的针式打印机和600dpi的激光打印机)上打印表格,效果会完全不同。如作者以针打作为他的输出打印机设计的程序,在激光打印机上输出,就会发现表格和文字错位,而且表格会打印得很小。而且原文中打印坐标的确定,必须靠反复的试验才能达到比较满意的效果。

针对原目标,笔者设计了一段程序。首先在窗体上添加一个DBGrid来显示我们所要打印的数据,在这里,DBGrid不只是起到显示数据的作用,而且用户对DBGrid作的调整,例如改变了各字段的排列顺序,各字段的显示宽度等,都将直接反映到打印结果中去,也就是说,我们实际上就是要把DBGrid的内容直接输出到打印机。以下程序在Win 98+Delphi 4下编译通过,代码如下:

procedure TForm1.Button2Click(Sender: TObject);

const

LeftBlank=1; //定义页边距,单位厘米

RightBlank=1;

TopBlank=1;

BottomBlank=1;

var

PointX

PointY:integer;

PointScale

PrintStep:integer;

s:string;

x

y:integer;

i:integer;

begin //获取当前打印机的分辨率

PointX:=Trunc(GetDeviceCaps(Printer.Handle

LOGPIXELSX)/2.54);

PointY:=Trunc(GetDeviceCaps(Printer.Handle

LOGPIXELSY)/2.54);

//根据打印机和屏幕的分辨率计算出从屏幕转换到打印机的比例 

PointScale:=Trunc(GetDeviceCaps(Printer.Handle

LOGPIXELSX)

/Screen.PixelsPerInch+0.5); //横向打印

printer.Orientation:=poLandscape;

//打印的字体和大小

printer.Canvas.Font.Name:=′宋体′;

printer.canvas.Font.Size:=10;

//根据字体的大小确定每行的高度

s:=′漳州市刑警支队′;

PrintStep:=printer.canvas.TextHeight(s)+16;

//打印的起点位置

x:=PointX*LeftBlank;

y:=PointY*TopBlank;

//DataSource1是DBGrid1所连接的数据源

if ((DataSource1.DataSet).Active=true) and ((DataSource1.DataSet).RecordCount〉0) then

begin

printer.BeginDoc;

(DataSource1.DataSet).First;

while not (DataSource1.DataSet).Eof do

begin //打印DBGrid中的所有列

for i:=0 to DBGrid1.FieldCount-1 do

begin

//假如所要打印的列超出了打印范围,则忽略该列

if (x+DBGrid1.Columns.Items[i].Width*PointScale)〈=(Printer.PageWidth-PointX*RightBlank) then

begin //画表格线

//每页的第一行打印表头

Printer.Canvas.Rectangle(x

y

x+DBGrid1.Columns.

Items[i].Width*PointScale

y+PrintStep);

if y=PointY*TopBlank then

Printer.Canvas.TextOut(x+8

y+8

DBGrid1.Columns[i].Title.Caption)

else

Printer.Canvas.TextOut(x+8

y+8

DBGrid1.Fields[i].asString);

end; //计算下一列的横坐标

x:=x+DBGrid1.Columns.Items[i].Width*PointScale;

end;

if not (y=PointY*TopBlank) then

(DataSource1.DataSet).next;

x:=PointX*LeftBlank;

y:=y+PrintStep; //换页

if (y+PrintStep)〉(Printer.PageHeight-PointY*BottomBlank) then

begin

Printer.NewPage;

y:=PointY*TopBlank;

end;

end;

printer.EndDoc;

(DataSource1.DataSet).First;

Application.MessageBox(′打印完成′

′打印′

32);

end;

end;

R的数据分析制霸以及企业级应用盘点 第二届游戏运营技术论坛来袭!与大牛共论云时代的游戏运营之道 云雀科技:飞行器+地图,展望飞行器的新体验 Sandstorm,前Googler和极客名人建立通用开源工具保姆 触控科技CEO陈昊芝:引擎技术推动行业升级 谁能成为Hero,这一次你说了算!——TCL智能电视开发大赛创意阶段评审征集 微信官方在“公开课”上13个热点问题的解答摘要 MDCC 2014移动开发者大会10月开幕:你就是主角! 设计师该如何挣得一席之地? 回到未来:最热门的十大清洁能源技术公司 深度学习:未来机器人的进化途径 搜狗开源内部项目管理系统Cynthia,已被数十家企业采用 沃游戏新版本全新登场 好友PK根本停不下来 腾讯发布首款智能硬件,内部筹建孵化器鼓励创新 触控开发者平台:孕育“十亿开发者俱乐部” 《近匠》大新伙伴:大姨吗防晒小助手,帮你呵护女神 专访阿里云总裁王文斌:做出“用得爽”的工程产品 专访AMD全球副总裁潘晓明:2014全线发力,力争中国市场 搜狗开源内部项目管理平台Cynthia意欲何为? 深度解析浪潮新八路服务器TS860 支持Box2D,开源HTML5 2D游戏引擎FLAG 一周消息树:从程序员到架构师的方法与逻辑 【CTO俱乐部走进海尔】海尔的转型探索之路 十一问MongoDB CTO,谈NoSQL人气王的扩展、事务及运维 腾讯“创业•密码”开发者论坛 ChinaJoy引爆创业者关注 从F1赛车到智能手机,无线充电技术之崛起 助力梦想!MDCC免费为优秀App开发团队提供展位 为Symfony2和Redis正名,基于PHP的10亿请求/周网站打造 【聚焦API】教你如何选择最适合的NLP API服务商? 直接改应用!Flipboard开源iOS应用内调试工具FLEX 专访腾讯游戏运营总经理崔晓春:云时代游戏运营的变革与创新 请问ISA Server 中如何设定某个局域网IP访问Internet的带宽上限? 请教大家一个低题的问题? 用InterDev创建工程的时候为什么总是提示Unable to contact web server http://localhost? 偶的100分就这样没了????!!!!!!! 调查:一般多长时间将你在 download.com 上的程序升级? 请问谁有解三元一次方程的程序,能给发过来吗? 检查表单这样为什么不行? 如何看别人的源代码??? 各位,那位用过华表插件...求救,怎么嵌入html? VC下基于ATL的数据库编程问题,很容易拿分的。 请问怎样才能向数据库插入当前日期,格式为14位字符串yyyymmddhhnnss 怎样从html页面中向ActivXForm传参数,在ActiveXForm中又如何接收? 如何控制 Text 控件中文本的行间距? 如何看别人的源代码??? 一些代码... 那位知道 Microsoft ODBC for Oracle 的驱动程序在那里能下载 ::)access数据库中字段是日期和时间型,用DAO编程应该用什么类型的数据才能填充数据库中的字段。 为什么?(大虾、菜鸟...统统欢迎) 在C/C++ 程序中怎样延时? 关于vb程序关闭的问题 如何得到一个文件夹的所有子文件夹和文件? ISA Server LOG中发现异常记录!是不是有黑客? 今年软件水平考试什么时候开始报名啊? 高分求购StyleReport EELite的license 很急,请各位帮忙解决notessql问题 如何得到一个文件夹的所有子文件夹和文件? 求兼职java工作 非模态对话矿如何自杀? 有谁熟悉DB2?(关于VW中元数据!) 如何将光盘中的一个子目录映射成一个硬盘盘符? 关于Applet!请指教 我现在要做一个象性能监视中的显示表格(使用VC),监视网络流量,和Media Server 的Stream。有没有低层的API? 蚂蚁下载 关于弹出窗口的问题 串口通讯的问题 关于_RecordsetPtr的一个问题,百思不得其解,请求帮助。 文档中心的帖子怎么收藏? 怎么在java中向一个sql语句传参数,就像oracle的proc一样啊? 如何有一个人成分6000行的文本文件,请问如何预览后打印出来. 其他应用程序能调用notes中的代理吗 ?在我的表中设了一字段PKID,此字段是主键并且自增,当我插入一条记录时,我如何取得此记录的PKID(Hothehe) 这个帖子怎么打不开? 急需解 请问高手,设计一个分时系统要注意些什么? 哪有c++builder6的帮助和列子 SourceSafe客户端登陆问题 呵呵,几天没来,这里全变样了,不错不错,漂亮多了。另外,提点建议。 在C/C++ 程序中怎样延时? 用sql语句,怎样取最后10条记录, 然后是最后第20-10条 , 30-20条 cockhorse(木马)来拿分,另找WindowsCE.net 我刚请我1个要好的朋友(但是很穷)吃饭 如何清空数据日志呢? 没人回答,我再问一遍关于ADODataSet中参数传递的问题 请问马可波罗磁化电解水机的价格是多少?有人知道吗?最近我看邻居阿姨经常在聊这个话题,烟台这边有很多人买,好像是在烟台马可波罗(磁化电解水机)电子科技有限公司买的.有知道的朋友解 硝酸银受热分解可否对溶液加热 绿色植物进行光合作用的基本原料是A氧气 B水汽 C二氧化碳 D.氮气 马可波罗磁化电解水机的售后服务怎么样? 硫酸铜溶液中加人氢氧化钙溶液 蝎子真的有毒吗? 马可波罗磁化电解水与长寿最近看到好多有关马可波罗电子科技有限公司的,好像是做磁化电解水机的,都说喝磁化电解水好,也不知道到底怎么个好法,好像又说喝马可波罗磁化电解水对长寿有 淡黄色固体在氧气中燃烧生成有刺激性气味的气体文字表达式和符号表达式: 什么蝎子最大,什么最毒 马可波罗磁化电解水机清洗需要去专卖店还是自己就可以清洗? 锌与硝酸银溶液的化学方程式(要配平哦~) 为什么把蝎子称为毒首? 马可波罗磁化电解水机对盛水器有什么要求吗?怎样用最合理啊 长期吸入含铁粉尘对人体有什么伤害 蝎子有毒吗? 镍矿粉尘对人体的危害 经常吸入铁粉尘有什么危害?我因为工作关系,每天上班都会吸入很多铁灰尘,想知道对人体有什么危害?要怎么防护? 最毒的蝎子是? 今天做化学实验,皮肤接触了硝酸汞溶液,会不会汞中毒,全都散在手上了,就这一次,不过时间维持在一分钟,有没有事呢?好担心,听说汞是剧毒的 二硫化铁和氧气高温会生成三氧化二铁和一氧化硫吗? 长期吸入活性炭粉末对人体有什么危害吗?因工作需要会吸入些活性炭,戴口罩也没多大作用 . 我在做实验时把很多纳式试剂弄到手上了,在洗东西的时候手又接触到了溶有纳式试剂的水,会不会汞中毒啊 三氧化二铁与氧气的化学方程式 亚硫酸钠和氯气的反应 长期与硝酸汞皮肤接触会出现什么现象 电解水制氧制氢用交流电行吗 吸入金属粉会有什么危害? 世界上什么蛇最毒? 有没有描写夏天的好词好句好段急用只限30分钟 吸入金属粉末有害吗 世界上最毒的蛇是什么蛇? 有谁知道生活中什么东西具有黄金比例呢?生活中有哪些符合黄金比例的现象?.一件东西上有三个黄金比例的现象的有吗?急,还有这个东西的本来的寸法是多少啊? 电解硝酸银相当于电解什么.相当于点解什么。和要还原加入什么是一个概念吗?有什么区别? 石膏粉和其粉尘对人体有什么害处?本人制作石膏娃娃,另外还想问一下关于石膏的凝固速度与各方面的条件的关系,如水的温度等,还有强度和可否有其他物质进行添加改良等,越详细越好,小弟 黄金分割是指什么? 什么蝎子的毒性最大 稀硫酸和铁反应为什么有刺激性气味? SOS!我想知道高一化学常用元素的化合价.我现在是高一,想知道下列元素比较全面的化合价:(最好每个都配个例子)~3Q~K HNa FAg ClCa OMg SBa CZn SiCu NFe PAlMn我知道的已经列出,(最好提出后顺便配 长期吸入固体粉尘对身体有什么样的危害?该产品本身是无毒的,可是固体粉尘好像不安全. 稀硫酸有无刺激性气味RT 酒精着火怎么灭火 长期吸入石墨粉尘对人体有哪些危害 硫是淡黄色固体 硫受热融化 液态硫受热气化 硫酸有刺激性气味 哪个是发生了化学反应? 酒精着火如何灭火 硝酸银溶液中混有硝酸铜溶液,怎样得到纯净的硝酸银溶液? 世界上什么蛇毒性最大 方解石与稀硫酸反应,制成硫酸钙的整个过程中有毒吗?是不是有刺激性的气味啊?一楼的,很遗憾,你的答案明显是错的!我们车间就是做硫酸钙的,在制成的过程中有很呛人的刺激性味道! 酒精着火用什么灭火 世界上最大的蛇是什么?最毒的蛇是什么?说名字 为什么硝酸银见光分解? 装酒精的瓶子着火了怎么灭火啊 什么蛇毒性最大? 硝酸银在避光的状态下,加热到多少度才会分解? 波尔多液中的硫酸铜与氢氧化钙反就生成了氢氧化铜,为什么还不能用铁容器装呢? 什么样的蛇的毒性最大? 硝酸银会分解成什么 硫酸铜溶液与氢氧化钙溶液反应为什么成碱性?它们反应不是生成了氢氧化铜沉淀吗?那通过水解反应溶液应该是酸性才对啊,请高手帮忙解决哈 哪种蛇毒性最大 硝酸银分解反应式是什么? 植物光合作用的原料是什么
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘