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

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

修改IE的环境菜单-VB资料 修改安装向导生成的缺省安装目录 -VB资料 修改屏保口令 -VB资料 修改屏幕保护的口令 -VB资料 旋转字体 -VB资料 延时函数-VB资料 一个关于乘法溢出问题的探讨 -VB资料 一组VB实用小程序 一组VB应用技巧 隐藏和显示任务栏-VB资料 应用 WSH 读写注册表和建立快捷方式 -VB资料 VB用 IIF 和 SWITCH 以精减代码 VB用BASIC语言设计Windows风格的用户接口 VB用Form 的 Mouse_Move事件来检查鼠标是否在窗口内: VB用RND()函数加密 VB用SendKeys来捉屏 用VB4.0制作软件封面 用VB5 对Windows 95 任务栏提示区进行编程 用VB5读写注册表实例 用VB5开发商品软件的经验谈 用VB5设计多功能计时器 用VB5制作文字上卷效果 用VB6.0实现打字效果 用VB编写DirectX7.0游戏(上) 用VB创建Excel报表 用VB读取和控制Windows的中文输入法 用VB将命令行软件Windows化 用VB进行移位操作 用VB开发CAI软件的小经验 用VB开发分布式应用 用VB切换三个特殊键 怎样填充按钮客户区? 寻找图书~?? 请问如果数据量很大,比如大型企业的即时采集数据,应该用什么数据库系统处理呢?oracle,sysbase,db2,sqlserver还是cobol?? 这么简单的问题,难道就没有人能帮我了吗?!太遗憾了! 敬一杯“情人醉”给MM_mimi(人淡如菊),别人不要进来呀! 谁有过同样的遭遇??? 长整数除法的算法?? 关于Java Plug-in和Applet的一个问题 请求推荐有关SDK的好书!!!!!!! 我受不了了 个人主页链接如何让鼠标变成手形?谢谢! 老话题:三层结构中blob字段的存取出问题了? run-time类是怎么回事? 当多个程序对同一个文件进行读写操作,如何防止同时写入造成混乱? 求银行家算法的c程序! 请问W2K下面鼠标阴影的效果是用哪个API实现的? 我提议有编程经验的朋友们,一起来研究一种真正符合我们实际开发工作的模板 我用上kylix了!!!!!!! 请教,关于NT域用户的问题!NT账号,怎么设定唯一性呀?比如有aa的用户,我用aa登陆后,别人不能用aa同时登陆了?应该在那儿设置呀? Mfm1992?是个什么东西呀! 如何在informix/esql c中使用大事物? 如何保存收下來的email呢???!!!!! 关于一个网站建设的问题,望高手指点。 求救;如何建立一个登陆页面? 谁能给出一个远程访问互联网ACCESS数据库的经典代码?有28分送上! 怎样将-个十六进制数转换为十进制? 如何将java程序编译成dll文件 cannot focus a disabled or invisible window 一表我想通过文本框来增加记录,为何不能发送到表中,不要告诉我是没有post的原因。 奇怪,borland的开发能力这么强,为什么几乎没有一个象office那样流行的应用软件呢?如果它的应用软件很多,就不会象现在这样穷了吧? Delphi 数据库不如Power Builder 吗? 请问怎么安装新的控件? B样条曲线:如何由经过点反算控制点? Berzer曲线:如何由经过点反算控制点? 关于activereport的字符集问题 有没有计算曲线长度和交点的好方法? Install Shield For VC6怎么用???????????????????? ODBC数据库 ****有没有计算曲线长度和交点的好方法? ****Berzer曲线:如何由经过点反算控制点? ****B样条曲线:如何由经过点反算控制点? 有谁知道"边缘频率"、"中间频率"、"双频分析" 请问oicq登陆以后的住界面的我的蚝油dock是如何实现的,是什么vcl,或者自己写,如何实现?请指点! pfc的好处? 一个伪程序员的自白 不但给分,还给¥ 散分给喝过酒兄弟姐妹们(今天心情很不好,我深爱的人不爱我,苦痛,郁闷,多喝了几坛,请ghj1976、3B、roani谅解,最后一坛酒,感谢水园的朋友们) 怎样准备高程考试,还有三个月! 人生自古谁无错 -- 对青年时代的林仙儿心理活动的分析 小的大三,放暑假了,现在上海找一个单位实习,各位知情者请告知,定重谢! 请问如何让我做的程序一直在最底层呢、?? 北师大版 16页第1,2,题 八年级下册数学书复习题16的8~12题(过程)人教版的 推荐一些简单的英文歌曲,适合学英语的.要好听一点的,最好是安静一点的.本人英语不太好~不要太慢的、想my love的速度差不多. 八年级下册数学课本习题答案数学课本p90面的练习1、2、3p120面的练习2、9、p90习题的4、5、7、9、10、11、14、拜托了, \ 我从三年级起就没学过英语,我现在初二,我这个暑假学英语,我该怎么学 鲁教版八年级下册数学课本习题答案 六年级下册数学44页第一题怎么写? 七年级英语上典中点Unit11标准测试卷单项选择,完形填空阅读理解答案.感谢!别说要再买一本什么的.也别说什么自己努力.答得好再加50分 再次谢谢了! P104习题19.2 第十四题 复习题19 P122 第十二至十五题~ 六年级上册数学书100页答案 人教版七年级英语完形填空和阅读理解谁能给我一些题啊 八年级下册数学课本习题19.我们这章学的是 特殊的平行四边形第4题:在Rt三角形ABC中,∠C=90° ,AB=2AC,求∠A,∠B的度数!第9题:在Rt三角形ABC中,∠ABC=90°,CD⊥AB与点D,∠ACD=3∠BCD,点E 人教版六年级下册数学课本100页答案我只要第7题式子.在长12.4,宽7.2的长方形纸中,剪半径是1厘米的圆,能剪几个?结果要是28,求式子. 阅读理解与完形填空练习题 英语NBA is the most famous basketball game in the world.There ① a Chinese players in this game.His name is Yao Ming.He is ② player in this game.In his spare time,Yao ③ cars.On last Christmas, 八年级上册人教版数学课本习题15.1第6、10、11题答案 1:什么是十进制计数法?你能说出哪些计数单位?2:怎样比较两个数的大小?3:分数的基本性质和小数的基本性质有什么关系?4:小数点移动位置,小数大小会发生什么变化?5:因数、倍数、质 关于英语的完形填空和阅读理解题考英语的时候有一毛病,基础可以一点不错,但是完形和阅读我就惨了啊!各位提提做这些阅读题的方法吧! 人教版八年级上册数学课本习题12.1第三题答案 六年级下册数学书第77页答案写详细 完形填空练习书浙教版英语九年级完形填空的练习书有什么比较好的可以推荐的?英语基础还是不错的,但是完形方面不是很好。还有就是选词填空的练习书。推荐好的话我会再给分的;另 义务教育课程标准实验教科书八年级数学下册第16章 分式 第九页 7页第七.求 苏教版的 请推荐一本专门练完形填空和首字母的初中练习书和英语字帖.如果没有此类专门书籍,英语阅读练习类书籍也可.英语字帖不要练连笔的,最好说下出版社,毕竟重名的是有的. 八年级下华东师大版数学课本第十七章分式的全部习题答案 有的话追加到100 练习题 及习题 苏教版的六年级数学书上册的第二页第7题(2)小题 高中英语阅读理解和完形填空练习书哪个好 几道分式计算怎么做 试卷的题 带图顺便讲解下, 小学数学六年级上册练习与测试12-15页答案 第几页第级题写清楚 哪种高中完形填空的练习书是15个空的?英语完形填空 P120到P122习题的全部答案、(5、8、9、14、15题做完了、不需要答案) 八下数学第三章 分式练习题1、当x等于什么数时,下列分式值为0?(x+2)(x+3)————— ←这是分数线x^2-42、已知x/2=y/3=z/1/2,则(x+3y-z)/(2x-y+z)的值是______3、如果a+1/a=3,那么分式a^2/a^4+a^2+1=_____4、化 小学数学六年级上册练习与测试111页到114页答案 八年级下册数学书复习题19答案急需呀,请你们帮帮忙吧 已知a+b+c≠0,(2a+b)/c=(2b+c)/a=(2c+a)/b=k,求k的值.请详解公式的含义等.已经知道答案是3,利用的是三个分式的分子相加比上分母相加.但是这个利用的哪个公式呢?什么样的定义,谁提出来的公式定义, 练习与测试小学数学6年级上册第12页第2题怎么解答? 数学八年级下册书复习题18的答案 新人教版八年级数学上册课本习题11. 一部分也可以。1.男生人数是女生的1.2倍。如果女生有x人,男生和女生一共有()人,男生比女生多()人。2.水果批发市场运来苹果3.5吨,运来的梨比苹果的2倍多0.1吨,运来的梨有()吨。3. 人教版 还有d62666 - 四级 2010-4-16 22:57 感谢语或评论:您还可以输入字输入内容已经达到长度限制可以输入49字 如果您对这一回答非常满意,您可以选择给回答者额外的奖励:0 5 10 15 20 30 40 50分 八年级上册数学课本习题11.2答案人教版的,急! 小学数学练习与测试6年级上册期中测试答案也就是43、44、45页答案,应用题算式尽量列出来好的给分!!! 急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急急 八年级下册数学复习题19答案.告诉我答案吧 八年级下册数学教科书练习题16.3答案 急 求高手做完形填空We just don't treat each other 1. as thatlike thatthe way we used to. I suppose we don't have the time, 2. orbuthowever our lives are too difficult or something. Maybe the city 3. I liveI live inwhere I live in is too big. 人教版八年级下册数学习题16.2的第1题和第7题答案. 八年级上册数学课本44到45页练习答案..谁知道请告诉我一下.谢谢 初三完形填空题There are two kinds of music in the world-one is written down and the other is not.many people earn their living ____music.they write songs for pop stars and music for films and TV plays.they usually write exact institutions on _ 八年级下册人教版数学91页第9题怎么做? 北师大版八年级下册数学课本 19页第2题如图,在正方形ABCD中,AB等于4 AF=2 DF=1 ,图中有几个直角三角形?你是如何判断的?与同伴交流 老师让这样,我看不懂有点~1:be的平方=4方+2方=202:ef平方3 问一下怎么才能把英语的阅读理解和完形做好(具体的练习方法) 人教版八年级下数学书习题19. 八年级下册人教版数学书第36页第3题答案 暑假应当怎么学英语,我是新初三. 八年级数学下册91页习题19.1第四 五 六 七 10题 暑假学英语,广州哪里去? 苏教版八年级上数学书第111页19题答案 2大题的地4小题第四大题的第二小题有的谢谢 学英语有什么好方法(关于做听力、完形填空、阅读理解之类的题)今年6月份就要中考了.在英语方面,初一的时候感觉还没什么,但到了初三后,就感觉像完形填空、阅读理解之类的题有些困
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn