| 网站首页 | 新闻 | 新书 | 专家 | 技巧 | 源码作品 | 工具/资源 | 商城 | 风采 | 留言 | 论坛 | 网址 | 承接 | 
您现在的位置: Access/Office中国 >> 技巧 >> Access >> 窗体标准控件 >> 文章正文 用户登录 新用户注册
窗体自动居中代码         ★★★
窗体自动居中代码
作者:huanghai… 文章来源:AccessQQ 点击数: 本日:{$DayHits} 更新时间:2004-11-23 17:26:58

使窗体居中显示代码
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

文章录入:huanghai    责任编辑:tm 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    专 题 栏 目
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    如何使 Microsoft Excel
    窗体类中慎用Option Exp
    求助。在窗体中怎样通过
    显示格式的灵活应用,拓
    ADP中如何用代码设置窗体
    如何能通过窗体访问表,
    高手指教
    按不同显示方式打开窗体
    如何在ACCESS2002以后的
    如何正确关闭所有打开的
    网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)