永发信息网

如何用VB6.0实现打印预览

答案:2  悬赏:10  手机版
解决时间 2021-01-31 15:53
  • 提问者网友:精神病院里
  • 2021-01-31 05:54
如何用VB6.0实现动态打印预览
主要实现数据库报表打印预览,数据库是ACCESS.
最佳答案
  • 五星知识达人网友:杯酒困英雄
  • 2021-01-31 07:26
我最近刚刚实现了这个。是基于Excel的。
'********************************
' 该模块用来实现各种打印功能
'********************************

'打印到excel中
Public Function print2Excel() As Boolean
' On Error GoTo Print2Excel_Error

Dim xlApp As Excel.Application
Dim i, j ,colums As Integer
Dim startRow, startCol As Integer
Dim tmp() As Variant
startRow = 1
startCol = 1
colums =10
Set xlApp = New Excel.Application '注意之前,要在工程-》引用中将支持excel的控件加载进来
Set xlApp = CreateObject("Excel.Application") '激活EXCEL应用程序
xlApp.Visible = False '隐藏或显示EXCEL应用程序窗口
xlApp.SheetsInNewWorkbook = 1 '打开工作簿,strDestination为一个EXCEL报表文件
Set xlBook = xlApp.Workbooks.Add '打开工作簿,strDestination为一个EXCEL报表文件
Set xlSheet = xlBook.Worksheets(1)
xlSheet.PageSetup.Orientation = g_Print_Method

'设置打印数据 g_Print_Data是一个Variant的二维数组,这个你要根据自己的情况作修改
For i = LBound(g_Print_Data) To UBound(g_Print_Data)
For j = LBound(g_Print_Title) To colums - 1
' xlSheet.Cells(startRow, i + startCol).Width = Len(CStr(" " & g_Print_Data(i,j) & " "))
、 Next
Next
'页面设置 g_Preview为全局变量,是否要求预览
If g_Preview = True Then
xlApp.Caption = "打印预览" '设置预览窗口的标题
xlApp.Visible = True '隐藏或显示EXCEL应用程序窗口
xlApp.ActiveSheet.PrintPreview
Else
xlSheet.PrintOut '执行打印
End If
xlApp.DisplayAlerts = False
xlApp.Quit '退出EXCEL
xlApp.DisplayAlerts = True
' xlBook.Save '保存文件

print2Excel = True
Exit Function

Print2Excel_Error:
print2Excel = False
End Function
全部回答
  • 1楼网友:山君与见山
  • 2021-01-31 08:02
用vb做一个记事本实在不很复杂,我们完全可以通过向导来很方便地做出来。但本文只打算讨论用手动方法制作记事本,旨在向vb初学者展示:学vb原来是如此容易! 通过阅读、研究本文并按本文所述进行尝试,初学者将学到很多东西,如怎样使用richtext控件来打开和保存文件,怎样制作菜单、工具栏和状态栏以及如何对其编写代码等。 第一章 让我们的记事本马上运行 急于求成是初学者共有的心愿。那好,请按如下三个步骤做,我们的愿望立即就可以实现! 步骤一:绘制界面。 新建一个标准exe工程,将其caption属性改为“超级记事本”,点击icon属性给它找个合适的icon图标。单击菜单“工程”-“部件”,在弹出的“部件”对话框里找到microsoft richtext box 6.0和公共对话框microsoft common dialog 6.0并选中它们,单击“确定”按钮。这时左边的工具栏上出现了我们刚才新添的两个控件了。在窗体上绘制richtext box和commn dialog,其中richtext box的大小和位置可不用理睬,我们将在代码中处理它,当然,有必要把它的scrollbar属性设为2-rtfvertical,这样在打开和编辑文件时垂直滚动条才可用。 步骤二:编辑菜单。 按ctrl+e调出菜单编辑器,我们来做如下几个菜单: 一.文件菜单: 文件(第一层) mnufile 新建(第二层) mnunew 打开(第二层) mnuopen 保存(第二层) mnusave - (第二层) mnufilesep (分隔线) 退出(第二层) mnuexit 二.编辑菜单: 编辑(第一层) mnuedit 复制(第二层) mnucopy 剪切(第二层) mnucut 粘贴(第二层) mnupaste - (第二层) mnueditsep (分隔线) 全选(第二层) mnuselecall 三.搜索菜单: 搜索(第一层) mnusearch 查找(第二层) mnufind 查找下一个(第二层) mnufindon 四.帮助菜单: 帮助(第一层) mnuhelp 使用说明(第二层) mnuusage 关于(第二层) mnuabout (注:各菜单项的快捷键请自行设置) 好了,其它的菜单项以后再根据需要添加。现在进入: 步骤三:编写代码。 '声明查找变量 dim sfind as string '声明文件类型 dim filetype, fitype as string '初始化程序 private sub form_load() '设置程序启动时的大小 me.height = 6000 me.width = 9000 end sub '设置编辑框的位置和大小 private sub form_resize() on error resume next '出错处理 richtextbox1.top=20 richtextbox1.left=20 richtextbox1.height = scaleheight-40 richtextbox1.width = scalewidth-40 end sub '新建文件 private sub mnunew_click() richtextbox1.text = "" '清空文本框 filename = "未命名" me.caption = filename end sub '打开文件 private sub mnuopen_click() commondialog1.filter = "文本文档(*.txt)|*.txt|rtf文档(*.rtf)|*.rtf|所有文件(*.*)|*.*" commondialog1.showopen richtextbox1.text = "" '清空文本框 filename = commondialog1.filename richtextbox1.loadfile filename me.caption = "超级记事本:" & filename end sub '保存文件 private sub mnusave_click() commondialog1.filter = "文本文档(*.txt)|*.txt|rtf文档(*.rtf)|*.rtf|所有文件(*.*)|*.*" commondialog1.showsave filetype = commondialog1.filetitle fitype = lcase(right(filetype, 3)) filename = commondialog1.filename select case fitype case "txt" richtextbox1.savefile filename, rtftext case "rtf" richtextbox1.savefile filename, rtfrtf case "*.*" richtextbox1.savefile filename end select me.caption = "超级记事本:" & filename end sub '退出 private sub mnuexit_click() end end sub '复制 private sub mnucopy_click() clipboard.clear clipboard.settext richtextbox1.seltext end sub '剪切 private sub mnucut_click() clipboard.clear clipboard.settext richtextbox1.seltext richtextbox1.seltext = "" end sub '全选 private sub mnuselectall_click() richtextbox1.selstart = 0 richtextbox1.sellength = len(richtextbox1.text) end sub '粘贴 private sub mnupaste_click() richtextbox1.seltext = clipboard.gettext end sub '查找 private sub mnufind_click() sfind = inputbox("请输入要查找的字、词:", "查找内容", sfind) richtextbox1.find sfind end sub '继续查找 private sub mnufindon_click() richtextbox1.selstart = richtextbox1.selstart + richtextbox1.sellength + 1 richtextbox1.find sfind, , len(richtextbox1) end sub '使用说明 private sub mnureadme_click() on error goto handler richtextbox1.loadfile "readme.txt", rtftext '请写好readme.txt文件并存入程序所在文件夹中 me.caption = "超级记事本:" & "使用说明" exit sub handler: msgbox "使用说明文档可能已经被移除,请与作者联系。", vbokonly, " 错误信息" end sub '关于 private sub mnuabout_click() msgbox "超级记事本 ver1.0 版权所有(c) 2001 土人",vbokonly,"关于" end sub '设置弹出式菜单(即在编辑框中单击鼠标右键时弹出的动态菜单) private sub richtextbox1_mousedown(button as integer, shift as integer, x as single, y as single) if button = 2 then popupmenu mnuedit, vbpopupmenuleftalign else exit sub end if end sub '防止在切换输入法时字体自变(感谢王必成先生提供此方案) private sub richtextbox1_keyup(keycode as integer, shift as integer) if keycode = vbkeyspace then richtextbox1.selfontname = commondialog1.fontname end if end sub 至此,我们的记事本可以编译使用了。点击菜单“文件”-“生成xxx.exe”,回到桌面运行我们的记事本看看,是不是颇有成就感? 当然,这样的记事本还比较粗糙,我们还需要做些工作,请看下一章。 第二章 美化程序界面 多数字处理软件都有工具栏和状态栏。工具栏和状态栏除了能美化我们的程序使其更具有专业性质外,还给用户带来操作上的便利。现在我们就来做一做这两样东西。 一.工具栏 (一)制作工具栏 单击“工程”-“部件”,选中microsoft windows common control 6.0并确定。这时,我们要用到的控件就出现在左边的工具栏上了。 要做工具栏,首先需要一个叫imagelist的控件来装载图像。在程序界面上添加它,然后右键单击此控件,左键单击“属性”,弹出“属性页”对话框的“图像”,再单击“插入图片”就可以一次性装载图片了(如不满意,以后还可以添加)。图片可在c:\microsoft visual studio\common\graphics\bitmaps\tlbr_w95下选择(这里假设你的vb安装在c盘下)。注意了:在插入图片时给每一张图片注明关键字,以便在引用图片时不至于混乱。如插入“新建”的图片,我们在“关键字”栏注明“new”。 图片有了,接下来在程序界面添加工具栏(toolbar)。添加后工具栏就出现在菜单下面,右键单击它,选择“属性”,在弹出的“属性页”对话框中的“通用”项作些设置,主要如下两项: 1.“图像列表”:选择imagelist1 2.“样式”:根据喜爱选择1-trbstandard或者2-trbflat 继续点击“属性页”的“按钮”选项,插入若干按钮。按钮有多种样式,请根据需要设置。这里请一定注意:每一个与用户操作有关的按钮都必须注明关键字、装载图片,如“新建”按钮,在“关键字”项注明“新建”,在“图像”项键入“new”(即imagelist1中的图片关键字),需要的话还可以在“工具提示文本”项填入适当的提示语。 (二)编写工具栏的按钮代码 工具栏按钮的代码编辑很简单,可以按照下面的格式去编写: private sub toolbar1_buttonclick(byval button as mscomctllib.button) on error resume next '出错处理 select case button.key '按关键字选择 case "新建" mnunew_click '等于菜单项“新建”被单击 case "打开" '等于菜单项“打开”被单击 mnuopen_click '......(继续编写其它按钮的代码) end select end sub 完成后试运行一下我们的程序,我们发现,有了工具栏之后,程序变得漂亮多了,只是有一个问题:打开一个较长的敞窢搬喝植估邦台鲍郡文档后,编辑框的下拉滚动条向上的箭头不见了。原因是:工具条占用一定的空间。解决方法:将“设置编辑框的位置和大小”中的richtextbox1.top = 20 和 richtextbox1.height = me.scaleheight - 40分别改为richtextbox1.top = 380,richtextbox1.height = me.scaleheight - 400即可。 二.状态栏 (一)制作状态栏 状态栏的英文名字叫statusbar,在窗体上添加它后会默认出现在窗体的最下方。用鼠标右键点击它,调出“属性页”对话框,单击“窗格”项,插入一些窗格,可以将各个窗格的“样式”设置为: 0-sbrtext 显示文本,需编写代码 1-sbrcaps 显示大小写状态,无需编程 2-sbrnum 显示numlock键开关状态,无需编程 3-sbrins 显示insert键状态,无需编程 4-sbrscr1 5-sbrtime 显示时间,不编程时时间不会随系统时钟变化 6-sbrdate 显示日期,无需编程 注意:加进状态栏后需将form_resze中的richtextbox1.height = me.scaleheight - 400改为richtextbox1.height = me.scaleheight - 600。 (二)状态栏根据其“样式”属性决定用不用编写代码(如上文所述)。下面举些例子,读者可以认真揣摩,从而达到举一反三的效果。 例一:用户选取了“新建”后,让第一个窗格显示:“目前状态:正在打开文件《……》”。请将下面代码写进“打开”菜单里面: statusbar1.panels(1).text = "目前状态:正在打开文件" & "《" &commondialog1.filetitle & "》" 例二:让第三个窗格显示时间并让时间跟随系统时钟变化。 首先,给程序加一个timer控件,将其interval属性设为1000。然后: 在form_load过程加入:statusbar1.panels(1).text = time;然后给timer控件编写代码: private sub timer1_timer() if statusbar1.panels(3).text <> cstr(time) then statusbar1.panels(3).text = time end if end sub 例三:当编辑框的文本发生变化时让第一个窗格显示:“正在编辑文档:文件名”。 private sub richtextbox1_chang() statusbar1.panels(1).text = "正在编辑文档:" & commondialog1.filename end sub 辛苦了那么久,我们现在已经拥有一个象模象样的记事本了。这个记事本由于用了richtext控件,理论上它能打开和编辑任意大的文档,使用起来的确比windows自带的记事本方便得多。当然,还有一些其它的功能需要添加和完善,这就靠你慢慢去完成了。 回答完毕!
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯