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

也谈为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;

巨头们抢滩或已结束?EMC掀起首场SDN登录战 CloudStack创始人梁胜:让中国软件走向世界 ArduinoDroid:让你在Android设备上开发Arduino 码农们的机器人:LEGO MindStorms EV3 详解 JavaScript 中的 this 对话PaaS平台dotCloud布道师:“轻量级”与“重量级”虚拟化 微软:谷歌企业生产力软件依然不行 IT旅途——程序员面试经验分享 17岁女高中生赢得编程马拉松大赛冠军 雅虎宣布开发新的搜索工具 创新用户界面 前谷歌高管给初入职场新人的14条忠告 业界良心 Facebook下一步将开源交换机 Google Glass:未上市先遇阻 TIOBE 2013年5月编程语言排行榜:Objective-C再度反超C++ 开发者需知的10类工具 林仕鼎:架构设计与架构师 跨平台工具火拼:Icenium与PhoneGap Build谁属王者? 索尼终于想明白了:PlayStation生态走向开放 高达10亿美元,Facebook为什么要收购Waze? Cocos2D-X成全球第二大游戏引擎 仅次于Unity 亲爱的苹果,能不能别让应用太廉价? 陈晓影:一位女海归曲折的拓荒故事 IDG李丰:在中国,创业公司最好是一个One Man Company Google Drive新增“保存到Drive”按钮功能 可自行添加 腾讯CDC创始人唐沐加盟小米 总经理陈妍接任 老板我想辞职:因为小米100万元征集一张壁纸 移动周报:GitHub上最火的Android开源项目 免费才是王道:盘点开发者须知的25个免费数据可视化工具 Pivotal获通用电气1.05亿美元支持 或将改变大数据和物联网的游戏规则 大掌门与阿里云和解:云生态系统呼之欲出 刘有涛:恩信科技云计算大潮中扬帆起航 在WINDOWS2000 ,开始菜单中的 "运行(RUN)" 在系统中是什么样的文件???? 急!! OleContainer 问题:为什么用olecontainer打开word文档速度非常慢,有没有解决的办法,多谢! 请问哪里有ASP+ACCESS 的邮件列表代表下载? dbgrid选中的问题?在线及等!!!!! 各地软件工程学院的学生都写写自己在学校学习的经历和体会! adobeacrobat 耗尽内存 如何解决 ! 新手求助:ADOQUERY控件的问题 文件与下拉列表 真搞不懂 关于办公系统及美术设计问题 API 局部放大函数 版主为什么删除我的帖子? 浏览器对象模型与文档模板(DOM)有什么不同和联系? 在datalist或datagrid中绑定的checkbox如何控制呢? 我的xp系统中ABC输入法,词组记忆功能始终不能用,请问怎么解决。 如何编程打开一些特殊窗口?如网上邻居,我的电脑属性,设备管理器 请教又一ShellListView和ShellTreeView中的问题?还望大家多多指教! 不懂!不懂!不懂!关于文档和视图。 将照片从数据库中取出,并显示到Image控件中,若当中不用文件作为临时存储行不行?? 弹出菜单怎么做 关于存储过程执行的正误判断及数据回滚问题。 关于LPCWSTR的问题? TChart的Canvas写上字后,最小化再最大化后字就没了, [2]请大家无论如何都要帮个忙,oralce存储过程性能问题,高手请进!!! 请问如何直接取得其它计算机的系统时间 如何使的 Form2 在 Form1 的 Top ? 怎样在pagecontrol的一个tabsheet中的页面加一个上下的滚动条 急!将textbox控件放入table中后无法通过controls获得textbox的id? 大家说说看!! 初来乍到,向各位学习,请大家指点一下,介绍些好的C#的WEB源码示例。 请大家帮我看看! weblogic发布servlet的问题 Fatal Error 的问题 哪里有和手机一样的笔划输入法下载. 哥哥们,问题还没有搞定,帮帮忙吧,很急呀,分不够可以加分 XDevClub.Com[X时代开发俱乐部]欢迎大家一起来讨论,来者有分 求救!!我的vc缺少一个 psapi.h 头文件!!!急用,帮忙粘贴一下,当场给分!!! 怎样更改CListCtrl中内嵌的CHeadCtrl控件的风格? 有关TChart的问题? 我怎样才能获得插入语句的ID值? 求帮助数组的问题 给分100 紧急求救 在DELPHI里执行ORACLE存储过程出错??? 当按照书名查询时,系统提示没有该索引:no index with 'bookname' field.何故 CorelDram教程碟不能播放怪的问题!! 如何在vb調用SQL存儲過程,并能得到返回的參數值. 哪位大侠帮帮忙呀!! 用CString的Find(LPCTSTR pstr,int nStart),pstr有没有通配符,急!!!!! 一个XP与2000的共享问题 打印问题,请各位提点建议。 DBA的缺省密码---【在线等】 钡的相对原子质量 东西罗马如何分裂和灭亡 NaCl转化为NaCo3只要一步. 钡的相对原子质量是? 罗马皇帝是提奥多西还是狄奥多西 如何只得到NaCl,而不得到NaCO3? 钡的相对原子质量是多少? 铝板研磨时,如何防止表面被氧化, 灯泡的灯丝烧断后搭接,搭接处还容易烧断原因是什么?我觉得是因为电阻变小,实际功率大于额定功率造成的,可答案不是,征求广大朋友的建议 钡、氯、硫的相对原子质量. 罗马何时分裂 常温下,将PH=a的NaoH溶液与PH=b的醋酸溶液等体积混合,恰好完全反应则醋酸溶液与NaoH溶液的物质的量浓度A 前者大 B后者大 C相同 什么是相对离子质量,相对原子质量,相对原子质量?什么是相对离子质量,相对原子质量,相对原子质量?拜托分别举个例子! 铝板被消毒水氧化怎么办? 用醋酸钠和硫酸为什么能反应出醋酸和硫酸钠?是不是因为什么强酸置弱酸?如果不是,那是什么?醋酸钠和醋酸那个酸性更强? 不锈钢201高铜,高镍,为什么近海边容易生锈? 乙酸与水互溶吗?RT 离子交换膜的用途是什么包括工艺原理是什么 如何判断手性原子周围基团的优先级别?比如,手性碳上连接着乙烯基,异丙基,异丁基的时候,是乙烯基大于异丁基还是异丁基大于乙烯基,为什么?不是异丁基,是叔丁基 乙酸和水是互溶还是分层?具体点 丁烯醛和丁醛哪个更易发生亲和反应比如和HCN,NaHSO4等化合物的亲核加成反应.在同一亲核试剂的条件下,醛发生亲核反应的活性与三个因素有关:电子效应、空间位阻效应、反应中间体的稳 化学一道盐类水解题同浓度的下列电解质溶液:1,碳酸钠 2,碳酸氢钠 3,偏铝酸钠 4,醋酸钠以上四种溶解的PH由大到小依次是?要解析 乙酸能不能与水以任意比互溶 怎样知道硝酸镍里有没有铁 旋光性是否由手性基团决定? 乙酸为什么可以与水任意比互溶 硝酸铜和醋酸镍哪个先分解 25摄氏度时,将一定浓度的盐酸和一定浓度的氨水按2:1的体积比混合.若混合液中铵根离子浓度等于氯离子浓度则溶液的PH值是大于还是等于或小于7 乙酸镍饱和溶液中的铁锈 如何去除 丁醛与氢氧化钠反应的化学反应 已知乙酸(HA)的酸性比甲酸(HB)弱,在物质的量浓度均为0.1mol/L的NaA和NaB混合溶液中,下列排序正确的是A.c(OH-)>c(HA)>c(HB)>C(H+)B.c(OH-)>c(A-)>c(B-)>c(H+)C.c(OH-)>c(B-)>c(A-)>c(H+)D.c(OH-)>c(HB)>c(HA) 蛋白质等电点测定为什么要在缓冲液中进行 我想化验硝酸镍中镍的浓度比,谁可以帮我?我在义乌,有一种电镀挂水中含镍,我想通过化学仪器测出镍的浓度,一般化工大学里的人都可以测出,我希望那位高人帮我 一道盐类水解题[例6] 将0.2mol/L CH3COOK与0.1mol/L盐酸等体积混合后,溶液中下列微粒的物质的量浓度的关系正确的是:( )A.c(CH3COO-)=c(Cl-)=c(H+)>c(CH3COOH)B.c(CH3COO-)= c(Cl-) 饱和氯化钡中氯离子和钡离子也饱和吗?那为什么电解饱和氯化钡没有钡单质生成, 若用实验证明CuSO4溶液显蓝色不是由SO42-离子造成的,下列实验无意义的是 :A 观察Na2SO4溶液,溶液没有颜色B 对比不同浓度的CuSO4溶液的颜色差异,浓度小的溶液颜色较浅C 向CuSO4溶液中滴加足量氯 乙二醇和浓的硫酸在140度生成什么? 为什么要划分东西半球?划分出来了有什么意义么? 证明硫酸铜溶液显蓝与SO42-无关,没意义的A观察硫酸钠溶液有没有颜色,B向硫酸铜溶液中滴中适量的氢氧化钠溶液,振荡后静置,溶液蓝色未消失 ,C向硫酸铜溶液中滴加适量的氢氧化钠溶液,振荡 乙二醇和浓硫酸反应140度和170度有什么区别?要方程式的…… 水 醋酸 谁更弱?都是弱电解质,那谁的××更弱呢?PS:我不知道××是什么.. 用什么可以腐蚀花岗岩我试过一些化学物,没用的。谁要是能有把握的就告诉老哥,单凭理论想象可以的不要来忽悠我去做实验。 实验室生物安全管理的相关技术标准有哪些 如何分离冰醋酸和水 什么是电生成Fenton试剂?是否就是Fenton试剂?Fenton试剂法属于均相催化氧化,电催化氧化属于多相催化氧化,而在电催化氧化中由于生成活性中间体H2O2,而后提及电生成Fenton试剂体系,是怎么回事? GB19489《实验室生物安全通用要求》谁能帮我找下GB19489-2008《实验室生物安全通用要求》,能不能帮忙提供一份Word版的,minmin8890@163.com .急用 醋酸会与水反应吗 什么是fenton 试剂,他有什么作用 简述我国对生物安全实验室设施的管理要求. 醋酸和水能否分层 请问Fenton试剂制作方法和配方,就是硫酸亚铁如何配置含量多少?双氧水含量多少?硫酸亚铁和双氧水的比例怎么配,是用作池塘氧化有机质的,主要用于氧化作用,不懂的请不要在网上复制一大片, ‘连通器里各容器里的液面高度总是相同的’ 对不对? 求视频:脑筋急转弯:荷叶一天长大一倍,十天长满整个池 塘,请问几天长满半个池塘 用化学腐蚀方法在大理石刻字为什么要涂上石蜡 能够成为双氧水,锌的催化剂的有哪些? 荷叶一天长大一倍,十天长满整个池糖,请问几天长满半个池塘?(脑筋急转弯) 哪里有大理石刻字的 相同温度相同物质的量的浓度的几种溶液1.氯化铵 2.NaHSO4 3.NaCl 4.Na2CO3 5.NaHCO3 6.醋酸钠 其溶液的PH值由小到大的排列顺序是? 池塘的荷叶,每天长一倍,20天长满整个池塘.问多少天长到一半池塘? 铜锂试剂,如二甲基铜锂如何成键的?铜、锂是如何与甲基结合的?最好能给出个结构式. 杭州13岁女生撒谎离家失踪5天 曾结医生举报官员公款出游 出门戴钢盔执擀台湾花莲地震波及浙江 温州某酒店上演台湾花莲地震波及浙江 居民称高楼摇晃国家级电视剧节目推介会首次移师杭州杭州政协委员建议传统产业“电商化”杭州重机厂将变身时尚商业中心浙江省提前3个多月完成全年保障房任务杭州未来两年技术研发类人才需求最大感动!美男子车祸变残障女友不弃结连理英老年人养鸡遣寂寞 送鸡上学生活忙【英汇丰银行报告:中国成为2013年度以色列军队炮击加沙打死一名巴勒斯坦人壮美!摄影师抓拍冰冻海浪翻滚瞬间【高英汇丰银行报告:中国成为2013年度港媒:中国小偷泰国免税店内行窃后坐飞娜塔莉·波特曼:参演《雷神》,主要是奥巴马豪华座驾“野兽”细节曝光美国务卿将访欧洲中东八国 重申与沙特美空管局解除禁令 飞行全程可使用电子美国空军证实一架“捕食者”无人机坠毁英国景点选出中国名 伦敦塔卫兵成“大福州西湖木栈道将于正月初一对游客重新韩国确定新驻华大使人选 系军人出身意大利营救数千偷渡客夏立言接任台陆委会主委河北环京津高速进出京车流量明显增加 河北举行2015年春节团拜会羊年春晚节目单公布 宋祖英谭晶再度缺贾乃亮晒帅照拜年:翻遍手机找了这张,新闻早点:央视羊年春晚节目单正式出炉个别食品存在污染问题环保部通报三起典型大气污染案担心东窗事发曾立誓廉洁自律中国积极维护联合国的权威(国际论坛)加入合作共赢进程(丝路絮语)毛泽东称新中国何报“为帝国主义宣传”兰道尔 科布望年薪破900万美金信阳平桥区原区长级干部李春恩受留党察为您守年 河南民警交警坚守岗位消防进信阳市国土资源局原副调研员扶廷胜被开两岸投保协议发挥功能 促双向投资保障
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘