|
||||||||||||||||||||||
|
||||||||||||||||||||||
|
|||||
| Visual Basic编程疑难问题解(二)五 | |||||
| 作者:佚名 教程来源:不详 点击数: 更新时间:2006-5-29 | |||||
|
Option Explicit Private Const DC_MAXEXTENT = 5 Private Const DC_MINEXTENT = 4 Private Const DC_PAPERNAMES = 16 Private Const DC_PAPERS = 2 Private Const DC_PAPERSIZE = 3 Private Declare Function DeviceCapabilities Lib "winspool.drv" Alias "DeviceCapabilitiesA" (ByVal lpDeviceName As String, ByVal lpPort As String, ByVal iIndex As Long, lpOutput As Any, lpDevMode As Any) As Long Private Type POINTS x As Long y As Long End Type '*********************************************************** '* 名称:GetPaperInfo '* 功能:得到打印机低张信息 '* 用法:GetPaperInfo(控件名) '* 描述:如在 form_load()中调用GetPaperInfo MSHFlexGrid1 '*********************************************************** Public Function GetPaperInfo(Flex As MSHFlexGrid) As Boolean Dim i As Long, ret As Long Dim Length As Integer, Width As Integer Dim PaperNo() As Integer, PaperName() As String, PaperSize() As POINTS With Flex .FormatString = "^纸张编号|^纸张名称|^纸张长度|^纸张宽度" For i = 0 To .Cols - 1 .ColWidth(i) = 1700 Next i .AllowUserResizing = flexResizeColumns .Left = 0 End With '支持最大打印纸: ret = DeviceCapabilities(Printer.DeviceName, "LPT1", DC_MAXEXTENT, ByVal 0&, ByVal 0&) Length = ret \ 65536 Width = ret - Length * 65536 '支持最小打印纸: ret = DeviceCapabilities(Printer.DeviceName, "LPT1", DC_MINEXTENT, ByVal 0&, ByVal 0&) Length = ret \ 65536 Width = ret - Length * 65536 '支持纸张种类数 ret = DeviceCapabilities(Printer.DeviceName, "LPT1", DC_PAPERS, ByVal 0&, ByVal 0&) '纸张编号 ReDim PaperNo(1 To ret) As Integer Call DeviceCapabilities(Printer.DeviceName, "LPT1", DC_PAPERS, PaperNo(1), ByVal 0&) '纸张名称 Dim arrPageName() As Byte Dim allNames As String Dim lStart As Long, lEnd As Long ReDim PaperName(1 To ret) As String ReDim arrPageName(1 To ret * 64) As Byte Call DeviceCapabilities(Printer.DeviceName, "LPT1", DC_PAPERNAMES, arrPageName(1), ByVal 0&) allNames = StrConv(arrPageName, vbUnicode) 'loop through the string and search for the names of the papers i = 1 Do lEnd = InStr(lStart + 1, allNames, Chr$(0), vbBinaryCompare) If (lEnd > 0) And (lEnd - lStart - 1 > 0) Then PaperName(i) = Mid$(allNames, lStart + 1, lEnd - lStart - 1) i = i + 1 End If lStart = lEnd Loop Until lEnd = 0 '纸张尺寸 ReDim PaperSize(1 To ret) As POINTS Call DeviceCapabilities(Printer.DeviceName, "LPT1", DC_PAPERSIZE, PaperSize(1), ByVal 0&) '显示在表格中 For i = 1 To ret Flex.AddItem PaperNo(i) & vbTab & PaperName(i) & vbTab & PaperSize(i).y & vbTab & PaperSize(i).x Next i End Function 问题六:在DataGrid中显示DataCombo 办法如下: DataGrid1_MouseDown Dim col As MSDataGridLib.Column Set col = DataGrid1.Columns(DataGrid1.col) If col.Caption = "MS" And DataGrid1.CurrentCellVisible Then DataCombo1.Left = DataGrid1.Left + col.Left + 2 * Screen.TwipsPerPixelX DataCombo1.Top = DataGrid1.Top + DataGrid1.RowTop(DataGrid1.Row) + 2 * Screen.TwipsPerPixelX DataCombo1.Width = col.Width - 2 * Screen.TwipsPerPixelX DataCombo1.Text = col.Text DataCombo1.Visible = True DataCombo1.SetFocus DataCombo1.ZOrder Else DataCombo1.Visible = False End If
|
|||||
|
|||||
| 教程录入:dping 责任编辑:dping | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关教程 | ||
| windows vista好用吗?是不是 怎么将数字证书和签名加入到 请问装vista系统不打开特效后 我的电脑是华硕A6T 装了VIST C盘是VISTA D盘是XP 最后装的 信息系统工程师--SystemAdmi 关于windows update 安装WINDOWS VISTA的最低系统 请教XP和VISTA的区别! 为什么按右键总是出现symant |
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |