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

VB如何解决VB中的Grid控件的打印问题

HTML文档下载 WORD文档下载 PDF文档下载
VB如何解决VB中的Grid控件的打印问题
作者:李俊海
---- Grid 控 件 是Visual Basic 最 常 见 控 件 之 一, 从VB3.0 到VB5.0 都有 该 控 件。 也 是VB 爱 好 者 最 喜 爱 的 工 具 之 一。 用 它 可 以 以表 格 的 形 式 显 示、 浏 览 数 据, 特 别 是 数 据 库 应 用, 直 接 绑定 即 可 显 示 浏 览 数 据 库 信 息。 然 而, 美 中 不 足 的 是Grid 没有 编 辑 和 打 印 功 能, 列 与 列 的 位 置 不 能 相 互 交 换。 笔 者 曾尝 试 着 给Grid 增 添 了 这 些 功 能, 使 之 锦 上 添 花, 功 能 更 强大。 下 面 给 出 改 进 方 法 及 源 程 序, 读 者 只 需 按 步 骤 写 下 源程 序 即 可 使 你 的Grid 具 有 打 印 功 能。 该 程 序 笔 者 在HP5/100Window 95 环 境 下 用VB5.0 调 试 通 过。

---- 给Grid 控 件 增 加 打 印 方 法 有 三 种:1 是 直 接 打 印 控 件 的方 法,2 是 过 printer 来 实 现 打 印 功 能,3 是 通 过 调 用MS-WORD 及MS-EXCEl 来 实 现 打 印。
---- 首 先, 打 开 一 个 应 用, 在FORM1 中 增 加DATA 控 件DATA1, 把DATA1 的CONNECT 属 性 设 为dBASE III, 再 把DATABASENAME 属 性 设 为D:\PJXM.DBF。 然 后 再 在FORM1 中 增 加MSFLEXGRID 空 间GRID1, 并 把GRID1的DATASOURCE 属 性 设 为DATA1。 这 样 数 据 库PJXM.DBF 的 信 息 就 会 在GRID1 中 显 示 出 来。

---- 方 法 一: 直 接 打 印 窗 体 法, 在FORM1 中 增 加 命 令 按 钮(command),CAPTION 属 性 设 为 直 接 打 印, 再 写 入 下 列 编 码:

Sub command_click
Form1.printform
End sub

---- 这 样 即 可 通 过 打 印 窗 体FORM1 的 方 法 把GRID1 的 数 据 打 印出 来, 遗 憾 的 是 只 能 打 印GRID1 中 显 示 的 数 据 部 分, 显 示 不出 来 的 则 无 法 打 印, 而 且 这 种 打 印 方 法 很 象 屏 幕 硬 拷 贝把 其 他 控 件 也 打 印 出 来。 也 不 能 灵 活 的 控 制 字 体 等。

---- 方 法 二: 通 过PRINTER 实 现 打 印。 这 种 方 法

---- 1、 加 入 打 印 命 令 按 钮(command1)、 函 数(prnt1) 即 可 实 现 打印 功 能, 写 入 下 面 代 码, 读 者 稍 加 改 动 可 写 成 标 准 的 函 数或 过 程。

Function prnt1 (x As Integer, y As Integer,
font As Single, txt As String)
printer.CurrentX = x
printer.CurrentY = y
printer.FontBold = False
printer.FontSize = font
printer.Print txt
End Function

Sub command1_click
Dim fnt As Single
Dim pp as integer
Pp=0'设置开始页码0
Dim stry,strx,strx1,stry1,linw,page1,p As Integer
Static a(8) As Integer'定义打印的列数
ss$ = "内部结算存入款对帐单"'定义表头
kan = 0
For i = 0 To 8
a(i) = 1500'定义每列宽
kan = kan + a(i)'计算表格总宽度
Next

page1 = 50'定义每页行数
strx = 200
strx1 = 200'定义X方向起始位置
stry = 1400
stry1 = 1400'定义Y方向起始位置
linw = 240'定义行宽
fnt = 8'定义字体大小
printer.fontname = "宋体"'定义字体

dd = prnt1(4000, 700, 18, ss$)'打印标题
printer.Line (strx - 50, stry - 30)
-(strx + kan - 10, stry - 30)
For j = 0 To gridrow - 1'gridrow为所要打印的行数
grid1.row = j
strx = strx1
printer.Line (strx - 50, stry - 30)
-(strx + kan - 10, stry - 30)
p = p + 1
For i = 0 To 8
grid1.col = i
dd = prnt1(strx, stry, fnt, grid1.text)
strx = strx + a(i)
Next

If p > page1 Then'next page
p = 0
strx = strx1
'line last line
printer.Line (strx - 50, stry + linw)
-(strx + kan - 10, stry + linw)
stry = stry1
'line col
For n = 0 To 8
printer.Line (strx - 30, stry - 30)
-(strx - 30, stry + (page1 + 2) * linw)
strx = strx + a(n)
Next
printer.Line (strx - 30, stry - 30)
-(strx - 30, stry + (page1 + 2) * linw)
pp=pp+1
foot$="第 "+cstr(pp)+"页"
dd = prnt1(strx - 30-1000, stry + (page1 + 2)
* linw+100, 10, foot$)'打印页角码

printer.NewPage'next page
dd = prnt1(4000, 700, 18, ss$) '打印标题
strx = strx1
stry = stry1
printer.Line (strx - 50, stry - 30)-
(strx + kan - 10, stry - 30)' print first row
Else
stry = stry + linw
End If
Next
st = stry
If p < page1 Then '在最后页剩余划空行
For o = p To page1 + 1
strx = strx1
printer.Line (strx - 50, stry - 30)
-(strx + kan - 10, stry - 30)
stry = stry + linw
Next
End If
stry = stry1
strx = strx1
stry = stry1 'line col
For n = 0 To 8
printer.Line (strx - 30, stry - 30)-
(strx - 30, stry + (page1 + 2) * linw)
strx = strx + a(n)
Next
printer.Line (strx - 30, stry - 30)-
(strx - 30, stry + (page1 + 2) * linw)
pp=pp+1
foot$="第 "+cstr(pp)+"页"
dd = prnt1(strx - 30-1000, stry + (page1 + 2)
* linw+100, 10, foot$)'打印页角码

printer.EndDoc'打印结束
Endsub

---- 这 种 方 法 通 过 灵 活 的 编 程 可 以 方 便 地 调 整 字 体、 字 型、线 形、 页 面、 纸 张 大 小 等。 可 打 印 出 比 较 满 意 的 效 果。 如果 你 的 计 算 机 上 装 有MICROSOFT WORD 和MICRO EXCEL, 最 精 彩 的 用法 还 是 把GRID 的 表 格 通 过VB 发 送 到MICROSOFT WORD 及MICRO EXCEL。生 成MICROSOFT WORD 和MICRO EXCEL 表 格。 这 样 就 可 以 充 分 利 用MICROSOFT WORD 和MICRO EXCEL 的 打 印、 编 辑 功 能 打 印 出 更 理 想 的效 果。 下 面 逐 一 介 绍。

---- 方 法 三: 通 过 生 成MICROSOFT WORD 表 格 打 印

---- 1、 在declaration 中 写 入:

Dim msword As Object

---- 2、 加 入 打 印 命 令 按 钮(command2),CAPTION 设 为" 生 成WORD 表
格", 写 入 下 面 代 码,

Private Sub command2_Click()

screen.MousePointer = 11
Set msword = CreateObject("word.basic")

Dim AppID, ReturnValue
appID = Shell("d:\office97\office\WINWORD.EXE", 1)
' Run Microsoft Word.

msword.AppActivate "Microsoft Word"
'msword.AppActivate "Microsoft Word", 1
full
Screen.MousePointer = 0
End Sub

---- 2、 写 入 以 下 过 程full()

Sub full()
Dim i As Integer, j As Integer,
col As Integer, row As Integer
Dim cellcontent As String
Me.Hide
cols = 4'表格的列数
row = gridrow'打印表的行数
msword.filenewdefault
msword.MsgBox "正在建立MS_WORD报表,
请稍候.......", "", -1
msword.leftpara
msword.screenupdating 0
msword.tableinserttable , col, row, , , 16, 167
msword.startofdocument
for j=0 to gridrow' 表格的行数
grid1.row=j
For i = 1 To cols
Gri1d.col=i
If IsNull(grid1.text) Then
cellcontent$ = ""
Else
cellcontent$ = grid1.text
End If
msword.Insert cellcontent$
msword.nextcell
Next i
Next j
msword.tabledeleterow
msword.startofdocument
msword.tableselectrow
msword.tableheadings 1
msword.centerpara
'msword.startdocument
msword.screenrefresh
msword.screenupdating 1
msword.MsgBox " 结束", "", -1
Me.Show

End Sub

---- 方 法 四: 通 过 发 送 到MICROSOFT EXCEL 实 现 表 格 打 印

---- 1、 加 入 打 印 命 令 按 钮(command3),CAPTION 设 为" 生 成EXCEL 表
格", 写 入 下 面 代 码

Private Sub command3_Click()
Dim i As Integer
Dim j As Integer
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set xlApp = CreateObject("Excel.Application")
xlApp.Visible = True
'Set xlBook = xlApp.Workbooks.Add
'On Error Resume Next
Set xlBook = xlApp.Workbooks.Add 'Open("d:\text2.xls")
Set xlSheet = xlBook.Worksheets(1)
xlSheet.Cells(6, 1) = "i"
For i = 0 To gridrow
grid1.Row = i
For j = 0 To 6
Grid1.Col = j

If IsNull(Grid1.Text) = False Then
xlSheet.Cells(i + 5, j + 1) = Grid1.Text
End If
Next j
Next i
Exit Sub

MemSQL:号称世界上最快的内存-关系型数据库 兼容MySQL但快30倍 PC衰落 Intel转投Google挖掘移动市场潜力 移动周报:500元体感、精确到0.01毫米的Leap Motion TUP第29期:王淮、龚世海谈如何打造优秀的技术团队 一网打尽13款开源Java大数据工具,从理论到实践的剖析 从用户体验的善与恶说起,做用户爱“玩”的教育应用 三大主流开源硬件对比:Arduino vs BeagleBone vs Raspberry Pi “BlackBerry 10移动应用开发大赛”应用推荐 Java程序优化的一些最佳实践 Heka:Go编写,来自Mozilla,高效、灵活的插件式数据挖掘工具 Anchora鲁为民:PaaS是我的兴趣 次世代IDE Light Table 0.4发布 带来众多更新和改进 别再设计易碎的Web API! LinkedIn:55人支持2700位员工,2亿用户的大数据分析 Brian Krzanich是谁?这位新CEO预示英特尔未来怎样? HTML5开发者心声:浏览器兼容性成最大问题 传微软6月下旬将发布第二代Surface 7到9英寸全有 Turbulenz:HTML5 2D和3D游戏引擎开源 携程开放平台总经理夏天:内容+高转化率成就开发者 直接拿来用!最火的Android开源项目(一) Qunar 谌振宇:旅游行业的移动化如何布局? 大数据分析“铁三角”: Teradata数据仓库、Teradata Aster与Hadoop Teradata专业服务:打造行业企业的“数据科学家” Xamarin Evolve 2013:竭尽全力让C#服务iOS与Android 史上最全!57个Web框架4轮横向对比 回顾银行数据的可用性和一致性历史 Qubole:托管在AWS平台上的Hive服务 自由操作系统 Debian 正式发布7.0版本 4月份浏览器份额:IE 8仍居第一,IE 10翻番 亚马逊正式在华推Android应用商店 收入3:7分账 不要男孩,只允许女生参加的四所编程学校 Mmxado错误 oracle问题!!!分数不多,但望高手不吝赐教 RECORDSET对象的UPDATE方法时出现以下错误提示 致斑竹流方,怎样以树形结构列出并打印PBL中所有对象,包括对象中的控件和事件,并标识哪些有脚本? 怎样学习编写VB代码?以及它与ADO数据库之间的连接? 原来holyfire是这的班主! 我最敬佩的人是:playyuer(女㊣爱)! 问一个关于TTreeView控件中树节点所带数据的问题 菜鸟求救:有关DBGrid显示的问题。 当读取1万条记录以上,应怎么做才有高效率? 那想在记事本中实现“查找,”“替换”。。。。要怎么做,我头猛大 有没有按位图画不规则窗口的代码? 怎样得到LISTCTRL的全部列(COLUMN)的信息,难道要用GETCOLUMN()? 为什么现在学win32 API的人这么少? 还是老问题 redhat安装问题,请高手指点 网页中有一文本框,如何约束用户输入格式 现在fanso怎么回事? 安徒生童话之六---老爹做的事总是对的 (呵呵,好故事,很美丽) 如何调用EXE或DLL程序,使被调用程序是调用程序的MDI中的一个子窗口? 《网络设计师教程》P103表5.2中 4B/5B码和4位2进制之间是怎么转换的? COM进程类组件中,在一个接口中加了一个方法,成员变量类型CString,可是不行,那该用什么? 请问那里有 motif toolkit 开发工具下载 一个mysql的问题! 出售软件源代码以及销售权! byte类型的数据如何转化成二进制数,显示给用户(如8-》0000 1000) 代征:精通vc的深圳朋友,精通网络通讯的开发和多媒体处理。 20分求助!这条警告是什么原因呀?怎么解决 ?LINK : warning LNK4089: all references to "SHELL32.dll" discarded by /OPT:REF 局域网的文件共享传输是基于什么协议的? windows and dos ??? 请问大家几个技术问题!!谁能回答阿!比较着急!:) 有没有代替VB里的PICTUREBOX 的控件,VB里的不好用?????????? 我是新手,请问JSP有些什么开发软件?比如JAVA用JBUILDER。。。 请问知道整型值a=97,什么函数可以得到"a"呢?即97->"a"通过什么函数呢? 如何将十进制数转换成二进制数 函数对象的简单问题 喜欢仙剑的朋友请进。:) 恭喜恭喜? 我想制作C++ Builder4工程的安装程序,不知道用什么软件,请大家帮忙。谢谢! 请问大家几个技术问题!!谁能回答阿! 我是ASP初学者,请求一个简单的问题,Help!!! 有没有关于installshield6的书, 快看呀!我真的要不行了! 请教大家一个术语吧! 低手问题,关于Form中的数据问题,谢了。 如何用PictureBox控件显示GIF图?特急!!!!!! 单文档多视(急!) 想学delphi中关于database方面的内容,不晓得哪本书好,大家推荐好吧? “CSDN准备推出海外图书邮购服务,首批是侯捷的著作和译作” 什么时候可以开始? 谁能介绍一下嵌入开发领域比较成熟的产品?他们的功能、性能如何 关于Autocad字体的问题 以《我长大了》写一篇作文要求开头、结尾超级好,用上好词比喻、排比句(主要是开头结尾)要高中水品的 用一两句英文概括小短文的中心思想!In 1982,the average wedding cost in cities was 3,600 yuan,but last year,it raised to 6,000.in such cities as Shanghai and Wuhan the average wedding cost will exceed 10,000 yuan soon.A lot of people Spe “选择xx”为话题写作文补充题目、要独特点的、 别百度一搜、全是这篇- -那我就不提问了 作文 【我长大了】 600字 英语翻译亲爱的老师:您好!非常感谢您对我们的辛勤教导!是您给予了我知识,您就像是辛勤的园丁,浇灌着我们这些祖国的娇嫩的花朵.如果没有您的教导,我不知道我能不能在英语考试中取得 以“选择”为话题写作文.怎么写? 我长大了 作文500字 咋写? 英语翻译三年时光,说长不长.即将在这半年里分道扬镳的我们,因为友谊而显得不愿离去.记得那时初一的我们,会对初三的毕业生即将自由而羡慕;而现在终于成为毕业生的我们,才明白那时我 紧急!以选择为话题写作文~600字~3章600字的~ 那时,我长大了 作文600字,明天要交,要贴近生活, 英语翻译我在百度搜不出来啊,因为英文都是有空格的,一搜就是只搜出来有个别单词的文本。我想有没有更好的方法啊? 作文素材以选择为题写作文 未来的房子作文 英语翻译下面几段文字,请尽可能的使用手动翻译!翻译的好,可以追加分数航空界最有威望的Teal公司预测,今后10年,全球对公务机的需求量将达9000架,总价值约944亿美元,而中国是最具潜力的市 以选择什么为题写作文 600字选择放弃 坚持 诚实 …… 写作文 600字 记叙文哦 未来的房子 作文400字 初二英语80词左右作文 紧急!以选择为题写作文~~500字~~初中作文 xxx真忙作文比如妈妈真忙 快 明天要用 好的加分 未来的房子 想象作文500字 初二英语短文 80词左右请根据说给表格内容写一篇80词左右的英语短文,介绍一下你今年春天旅游的情况旅游时间:4月20日至4月底旅游地点,交通工具,逗留时间:南京 乘火车 2天上海 乘汽车 3 “我真xxx”作文怎么写?急 怎样写未来的房子的作文? 初二英语作文:礼物 80词what is the best gift youhowe everveceived?how gowe it to you?when did she or he gave it to you?what do you think of it?急用 我真的很xxx作文 未来的房子作文300字未来的房子作文300字急 明天交 英语的主要内容Thw Hound of the Baskervilles(巴斯克维尔猎犬)Gullover's travels(格列佛游记)主要内容,500词,注意是英语的. 关于 XXX 我想对你说 作文 英语翻译Last Wednesday,Sandy and I bought a new kite and big ball of string.It was very windy so we flew our kite in the park.The wind blew hard and our kite flew very high and very well.Then the string broke.We both tried to get the string.We ra 求两篇英语文章及主要内容,做英语作业用,只要给出主要内容与好词好句好段落就行了.最好是比较长的文章……而且只需要故事概述和好词好句就行 《xxx我想对你说》作文 如何概括英语文章的只要内容 求3个名著主要内容作文!求3个名著主要内容:《朝花夕拾》的主要内容,《钢铁是怎样炼成的》的主要内容,《骆驼祥子》的主要内容,每个400字,感激不尽 xxx我想对你说的作文 《就英法联军远征中国给巴特勒上尉的信》的主要内容梗概~快快帮我,一个小时内~ 求关于信用卡的英文文献或著作要求:作者、年份、部分摘要或主题 第二次_____、十五岁,我多了一分______均不少于500字.我不管是不是网上的. 《就英法联军远征中国给巴特勒上尉的信》中心思想 想找点好的英语文章或世界名著看看哪里有? 假如我会变 明天就要交了,300字以上,写好点,只写1样,这样的300字 《就英法联军远征中国给巴特勒上尉的信》主要内容 “主要内容”和“中心思想”英语怎么说最地道?main content和main idea么 谁有初一的2篇15句的英语短文 要求关于春节的 就英法联军远征中国给巴特勒上尉的信 背景求雨果写这封信时有关雨果和圆明园的历史背景越详细越好 这个电话会议的主要内容是什么 -- 英语怎么说?xiexie 谁有展望未来2(第8课到第15课的课文文章)答的好我有高分的.有多少要多少 就英法联军远征中国给巴特勒上尉的信 的主要内容 这项工作的主要内容是什么 英语怎么说就是说:这项工作主要是干什么的正式点的说法呢?-----------What is the point of the job?可以吗 求英语小短文.速度.以next weekend 为题,写一篇小作文,十句话就好.关键字为周六goshopping、do my homework 、do housework,周日read a magazine and any books。 英语翻译When 12-year-old Helen received & lot of money on her birthday* she knew exactly* what she wanted to buy:a pair of LuluLemon trousers that her mom wouldn't buy because they were too expensive."We went to the store together,51 Helenas mom, 求历史的选择作文 求英语语文作文...八篇60字的初中英语日记..2篇语文读后感 2篇作文600字.. 英语翻译 Alan Chang was a handsome young man with good manners.  One morning he was walking along a street on his way to an appointment.He did not want to be early or late.He had forgotten to put on his watch so he went up to a man who was 有关历史的选择的作文 阅读短文.英语.If you have no special plans for your holidays,why not spend your time helping others?Some people say that the young people today only think of themselves.But it’s not true.More and more young people in the U.S.A.volunteer(自 这篇英语文章主要讲什么?用一两句话概括.Just the mention of the TOEFL,GRE and GAMT exams brings a thought of long hours of dull paper work.But that idea is becoming increasingly out of date.As planned,computerized tests will begin nex 以选择为话题写作文最好是满分的, 如何才能速度背英语短文? 用一两句英文概括小短文的中心思想!First,both are small rural communities.My hometown has a population of only about 10,000 People.Similarly,my college town consists of obout 11,000 people.A second way in which these Two towns are sinil 怎样以选择为话题写作文
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn