在刚做机房的时候 , 我们发现自己做的窗体会被 MDI窗体的图片给“挤”出去, 这是因为 MDI 程序中子窗体实际上是位于 MDI
窗口客户端 里,就是说子窗体的父窗体 是 MDI窗口客户端,而放置在MDI中的 picturebox 和MDI窗口客户端是同一级的层次结构,那么我们怎样才能使别的子窗体覆盖在MDI窗体的图片的上面呢。
在网上查了很多方法都行不同,后来在贴吧里找到一个方法,先调用一个API
<pre name="code" class="plain">Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
成应有的操作了 。然后回到MDI窗体的代码中,在每个窗体的点击事件中,都要加上一句SetParent 窗体名字.hWnd, frmMain.hWnd。这样就可完
把 这一段程序输入到模块中去 , 需要的时候就调用 , 这样不仅方便了许多 , 而且代码看的也整洁了许多 。在做机房的过程中你会发现有许多需要导出Excel表格的窗体,如果一个一个的去敲那就真是太麻烦了,为了偷懒,我们可以
模块中
ublic Sub Export(frmName As Form, FlexGridName As String)
Dim xlApp As Object 'Excel.Application
Dim xlBook As Object 'Excel.Workbook
Dim xlSheet As Object 'Excel.Worksheet
Screen.MousePointer = vbHourglass
On Error GoTo Err_Proc
Set xlApp = CreateObject("Excel.Application")
Set xlBook = xlApp.Workbooks.Add
Set xlSheet = xlBook.Worksheets(1)
'Begin to fill data to sheet
Dim intRowIndex As Integer
Dim intColIndex As Integer
With frmName.Controls(FlexGridName) '查找控件
'填充数据到Sheet1
For intRowIndex = 0 To .Rows - 1
For intColIndex = 0 To .Cols - 1
xlSheet.Cells(intRowIndex + 1, intColIndex + 1).Value = "'" & .TextMatrix(intRowIndex, intColIndex)
Next intColIndex
Next intRowIndex
End With
xlApp.Visible = True
Screen.MousePointer = vbDefault
Exit Sub
Err_Proc:
Screen.MousePointer = vbDefault
MsgBox "请确认您的电脑已安装Excel!", vbExclamation, "提示"
End Sub
窗体中
Private Sub cmdExportExcel_Click()
Export Me, "myFlexGrid"
End Sub
在制作程序中还有许多有趣的事情值得我们去发现,去研究。