打印问题。求解!
提问一:程序一运行老要提示存储PDF文档。应该如何设置才能让他不用保存那个PDF文档。
提问二:不能打印。或走一张空白纸。
提问三:打印时不能按我的标打印。
原程序如下。。。
------------------------------------------------------------------------
Private Sub Command1_Click()
Printer.FontTransparent = False
'Printer.NewPage(如是要这条将会打印一张空白,不加什么反应也没)
Printer.EndDoc
Printer.KillDoc
MsgBox "打印完成"
End Sub
Private Sub Command2_Click()
CommonDialog1.DialogTitle = "打印"
CommonDialog1.CancelError = True
CommonDialog1.Flags = 1
Printer.FontSize = CommonDialog1.FontSize
CommonDialog1.ShowPrinter
End Sub
Private Sub Form_Load()
Dim objx, objy, prtx, prty, mprtx, mprty, X_mid, y_mid
Picture1.Left = (Me.Width - Picture1.Width) / 2
objx = Picture1.ScaleX(Picture1.Width, Picture1.ScaleMode, vbTwips)
objy = Picture1.ScaleY(Picture1.Height, Picture1.ScaleMode, vbTwips)
prtx = Printer.ScaleX(Printer.ScaleWidth, Printer.ScaleMode, vbTwips)
prty = Printer.ScaleY(Printer.ScaleHeight, Printer.ScaleMode, vbTwips)
If (objy / objx) > (prty / prtx) Then
s = prty / objy
Else
s = prtx / objx
End If
prtx = Picture1.ScaleX(prtx, vbTwips, Picture1.ScaleMode) / s
prty = Picture1.ScaleY(prty, vbTwips, Picture1.ScaleMode) / s
X_mid = Picture1.ScaleLeft + Picture1.ScaleWidth / 2
y_mid = Picture1.ScaleTop + Picture1.ScaleHeight / 2
Printer.Scale (X_mid - prtx / 2, y_mid - prty / 2)-(X_mid + prtx / 2, y_mid + prty / 2)
End Sub
问题点数:20、回复次数:6Top
1 楼hspcyeling(白痴-菜鸟-。)回复于 2005-03-10 11:16:30 得分 0
有高手来吗?就不能帮帮我吗?我的窗体上有一个PICTURE控件,我要把这个打印出来。可总打一张空A白出来。按COMMAND2打印。没反应。Top
2 楼xiaoxiaoP(每天都是重新开始)回复于 2005-03-10 12:34:10 得分 10
Printer.NewPage是换页打印,如无内容则打印一空白页。
要打印控件应使用printform方法:
Picture1.PrintFormTop
3 楼xiaoxiaoP(每天都是重新开始)回复于 2005-03-10 12:50:55 得分 0
显眼,我错了
PrintForm方法只能用来打印Forms对象Top
4 楼xiaoxiaoP(每天都是重新开始)回复于 2005-03-10 13:00:13 得分 0
参见:http://www.china-askpro.com/msg11/qa15.shtml
Visual Basic的Printer对象支持PaintPicture方法,可以支持打印位图。其语法为:
Printer.PaintPicture picture, x1, y1, width1, height1, x2, y2, width2, height2, opcode
参数Picture是必需的,指明要绘制到打印机上的图形的来源源,通常是对象的Picture或Image属性。
参数x1, y1也是必需的,均为单精度数值,指定参数picture所确定图形在打印机上绘制的坐标(x-轴和y-轴)。其值的单位是由Printer的 ScaleMode 属性决定的。
参数Width1和Height1是可选的,都是单精度数值,指示图象的目标宽度和高度。如果目标宽度/高度比源宽度 (width2)/高度(height2)大或者小,将适当地拉伸或压缩图形。如果省略这两个参数,则使用图形的原始尺寸。
参数x2, y2、Width2和Height2是可选的。它们指示参数picture确定的图象内剪贴区的坐标(x-轴和y-轴)和大小。利用这四个参数,我们可以打印图象的一部分。默认是打印整个图象。
参数Opcode是可选的,是长型数值。它用来定义在将图象绘制到打印机上时对图象执行的位操作(例如, vbMergeCopy 或 vbSrcAnd 操作符)。关于位操作符常数的完整列表,请参阅 Visual Basic帮助文件中的有关内容。对于打印机来说,这个参数较少使用;而在屏幕显示图象时往往利用这个参数实现一些特殊效果。
通过使用负的目标高度值 (height1)或目标宽度值 (width1) ,可以水平或垂直翻转位图。
下面是一个简单的例子:
Printer.PaintPicture Picture1.Image, 0, 0Top
5 楼hspcyeling(白痴-菜鸟-。)回复于 2005-03-11 18:38:28 得分 0
1,我想在VB程序中直接打印在一个路径下的WORD文档
2,在VB中调用word文档对象。并打印。
这两个在我在MSDN帮助中没有找到。能找个地址或给个例子吗?
Top
6 楼sunnylily2004(太阳花)回复于 2005-03-11 19:51:39 得分 10
使用RichTextBox控件可以直接打开格式不太复杂的RTF格式文件。
如果你需要直接操纵Word文件,请首先VB引用中加入Microsoft Word 8.0 object library,然后定义变量如下:
Dim wp As Word.Application
Dim wd As Word.Document
即可轻松操纵,具体对象语法请查阅Word中所带的 Microsoft Word Visual Basic参考(Office97缺省是不会安装的)。
主持人注:Word不能象Excel那样作为DDE服务器。
你最好是通过Automation控制Excel和Word。你可以利用VB通过Automation调用Excel和Word中的VBA(参考QA000836 "如何知道Excel97的命令集")。在我们站点的“Office开发”部分有一些这方面的例子。
看看对你有用吗?Top




