![]() ![]() |
|
窗体自动居中代码 | |
作者:佚名 文章来源:不详 点击数 更新时间:2008/7/28 12:15:27 文章录入:杜斌 责任编辑:杜斌 | |
|
|
使窗体居中显示代码 access中的窗体虽然设置了自动居中,但是打开后总是有点不居中的感觉,加下如下代码可以做到真正居中显示 Private Sub Form_Load() DoCmd.Echo False Dim x, y As Integer DoCmd.Maximize x = Me.WindowWidth y = Me.WindowHeight DoCmd.Restore DoCmd.Echo True Move (x - Me.WindowWidth) / 2, (y - Me.WindowHeight) / 2 End Sub 下列代码适用于accessXP以上 '使用方法: 'Private Sub Form_Load() 'moveFormToCenter Me '居中 'End Sub 'Private Sub Form_Load() 'moveFormToCenter Me, 3000, 2000 '调整窗体大小并居中 'End Sub Option Compare Database Option Explicit Type RECT x1 As Long y1 As Long x2 As Long y2 As Long End Type Public Declare Function GetClientRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long '菜单栏高:22 '工具栏高:26 '状态栏高:20 Public Function moveFormToCenter(ByRef Frm As Form, Optional ByVal longFormWidth As Long = 0, Optional ByVal longFormHeight As Long = 0) Dim lngW, lngH As Long lngW = GetaccessClientWidth() - 4 '-4为测试微调值 lngW = lngW * 15 lngH = GetaccessClientHeight() - 4 '-4为测试微调值 'lngH = lngH - (22 * 1) '一个菜单栏 lngH = lngH - (26 * 1) '一个工具栏 'lngH = lngH - (20 * 1) '一个状态栏 lngH = lngH * 15 If longFormWidth + longFormHeight = 0 Then Frm.Move (lngW - Frm.WindowWidth) / 2, (lngH - Frm.WindowHeight) / 2 End If If longFormWidth > 0 And longFormHeight > 0 Then Frm.Move (lngW - longFormWidth) / 2, (lngH - longFormHeight) / 2, longFormWidth, longFormHeight End If End Function Public Function GetaccessClientWidth() As Integer Dim R As RECT Dim hwnd As Long Dim RetVal As Long hwnd = Application.hWndaccessApp RetVal = GetClientRect(hwnd, R) 'Debug.Print R.x2 'Debug.Print R.x1 GetaccessClientWidth = R.x2 - R.x1 End Function Public Function GetaccessClientHeight() As Integer Dim R As RECT Dim hwnd As Long Dim RetVal As Long hwnd = Application.hWndaccessApp RetVal = GetClientRect(hwnd, R) 'Debug.Print R.y2 'Debug.Print R.y1 GetaccessClientHeight = R.y2 - R.y1 End Function 相关链接: 更多信息请访问:计算机等级考试站 计算机等级考试在线题库 计算机等级考试论坛 |
|
![]() ![]() |