可以
Set Picture1.Picture = MSFlexGrid1.Picture可以看到其数据内容
Printer.PaintPicture MSFlexGrid1.Picture, 0, 0就打印了
分页有些麻烦,不过也能实现,一会给你贴代码参考参考
Set Picture1.Picture = MSFlexGrid1.Picture可以看到其数据内容
Printer.PaintPicture MSFlexGrid1.Picture, 0, 0就打印了
分页有些麻烦,不过也能实现,一会给你贴代码参考参考
总体思想就是把Grid的图形发到pictureBox中去,按分页的次数发。
然后重设Grid,再发一次
SendMessage MFGridPrv.hwnd, WM_VSCROLL, SB_LINEUP, 1
滚动来实现重设Grid
以下代码供参考
Private Sub ScrollDown5()
'第五个按钮的集合代码
Dim i As Integer
nMFGridCurRowTop = 1 'MFGridPrv当显示行顶行row值记录下一将显示的row
nMFGridCurPos = 0 '当前位置标识,0首,1尾,-1 中间,初始化为0
nMFGridFullType = -2 '当前所有行与MFGridPrv关系,0刚好相等,-1没有占满,1多出
nMFGridRowNum = 0 '记录MFGridPrv中显示的行数,滚动依据,显示不全的不在其中
nMFGridDisplayHeight = 0 '记录MFGridPrv所有显示出来的行的总行高
nMFGridCurPosLat = 0 '下一步位置标识,0首,1尾,-1 中间,初始化为0
nMFGridFullTypeLat = -2 '下一步所有行与MFGridPrv关系,0刚好相等,-1没有占满,1多出
nMFGridRowNumLat = 0 '记录下一步MFGridPrv中显示的行数,滚动依据,显示不全的不在其中
nMFGridDisplayHeightLat = 0 '记录下一步MFGridPrv所有显示出来的行的总行高 '重设高度
MFGridPrv.Height = nMFGridHeightOri
'移回首行
For i = 0 To MFGridPrv.Rows - 1
SendMessage MFGridPrv.hwnd, WM_VSCROLL, SB_LINEUP, 1
Next i
If nMFGridCurPage = 0 Then
Me.ToolbarPtn.Buttons(4).Enabled = False
End If
Me.ToolbarPtn.Buttons(5).Enabled = True
For i = 0 To nMFGridCurPage - 1
subScrollDown
If nMFGridCurPos = 1 Then
nMFGridCurPage = i
Exit For
End If
Next i
End Sub
Private Sub subScrollDown()
Dim i As Integer
If nMFGridCurPos <> 1 Then '不到尾部时
Me.ToolbarPtn.Buttons(4).Enabled = True
'检查当前状态
subGetMFGridDisplayRow
'MsgBox nMFGridRowNumRe & " " & MFGridPrv.Height
'SendMessage MFGridPrv.hwnd, WM_VSCROLL, SB_PAGEDOWN, 1
'当前所有行与MFGridPrv关系,0刚好相等,-1没有占满,1多出
If nMFGridFullType = 1 Then '多出
'检查下一步的状态
subGetMFGridDisplayRowLat
If nMFGridCurPosLat = 1 Then
MFGridPrv.Height = nMFGridDisplayHeightLat
Me.ToolbarPtn.Buttons(5).Enabled = False
Me.ToolbarPtn.Buttons(4).Enabled = True
End If
For i = 0 To nMFGridRowNum - 1
SendMessage MFGridPrv.hwnd, WM_VSCROLL, SB_LINEDOWN, 1
Next i
'SendMessage MFGridPrv.hwnd, WM_VSCROLL, SB_PAGEDOWN, 1
End If
If nMFGridFullType = 0 Then '刚好
'检查下一步的状态
subGetMFGridDisplayRowLat
If nMFGridCurPosLat = 1 Then
MFGridPrv.Height = nMFGridDisplayHeightLat
Me.ToolbarPtn.Buttons(5).Enabled = False
Me.ToolbarPtn.Buttons(4).Enabled = True
End If
For i = 0 To nMFGridRowNum - 1
SendMessage MFGridPrv.hwnd, WM_VSCROLL, SB_LINEDOWN, 1
Next i
End If
If nMFGridFullType = -1 Then '没占满
Me.ToolbarPtn.Buttons(5).Enabled = False
Me.ToolbarPtn.Buttons(4).Enabled = True
End If
'SendMessage MFGridPrv.hwnd, WM_VSCROLL, SB_PAGEDOWN, 1
End If
End Sub
Private Sub subGetMFGridDisplayRow()
'函数名:subGetMFGridDisplayRow
'入口参数:无
'出口参数:无
'功能:得到MFGridPrv当前显示的行数,显示一半的不在其中,此为前滚
'编写日期:2002.9.4
'编写人:yuiee
'备注:只对MFGridPrv使用
Dim nRowHeightTmp As Integer '当前行高 ,为动态变量
Dim nCaluHeight As Integer '动态行高nRowHeight相加的和
Dim nMFGridHeight As Integer '控件高
Dim nNumTmp As Integer '行数
Dim nDisplayHeightTmp '显示出来的行的总行高
Dim nTypeTmp As Integer '数据与MFGridPrv关系
Dim bExitNo As Boolean '
Dim i As Integer
'初始高度在调用此过程前设定
nMFGridHeight = nMFGridHeightOri
nRowHeightTmp = MFGridPrv.RowHeight(0) '标头高
nMFGridFullType = -2
bExitNo = True
For i = nMFGridCurRowTop To MFGridPrv.Rows - 1
MFGridPrv.Row = i
nDisplayHeightTmp = nRowHeightTmp
nMFGridRowNumRe = nRowHeightTmp
nRowHeightTmp = nRowHeightTmp + MFGridPrv.RowHeight(i)
If nRowHeightTmp > nMFGridHeight Then
nMFGridFullType = 1
bExitNo = False
Exit For
Else
nNumTmp = nNumTmp + 1
End If
Next i
If nMFGridFullType = 1 Then
If nMFGridCurRowTop <> 1 Then
nMFGridCurPos = -1 '中间
Else
nMFGridCurPos = 0
End If
End If
If nMFGridFullType = -2 Then
nMFGridRowNumRe = nRowHeightTmp
If nRowHeightTmp < nMFGridHeight Then
nMFGridFullType = -1 '小于
Else
nMFGridFullType = 0 '刚好
End If
nMFGridCurPos = 1 '到尾部
End If
nMFGridRowNum = nNumTmp If nMFGridCurPos <> 1 Then
'得到下一步起始点
nMFGridCurRowTop = i
End If
End Sub
Set Picture1.Picture = MSFlexGrid1.Picture可以看到其数据内容
Printer.PaintPicture MSFlexGrid1.Picture, 0, 0
怎么报打印机错误啊?
Printer.EndDoc
不然怎么打呀?
图片打印应该会吧?Picture1中有要打的图片,就打它也行呀
呵呵,挖苦哦呀?我也是被逼无奈,才出此下策哦,那么长的代码,5555
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = "aaaaaaaaaaaa"
'Set Picture1.Picture = MSFlexGrid1.Picture
Printer.PaintPicture MSFlexGrid1.Picture, 0, 0
Printer.EndDoc
一点都没变的代码