Results 1 to 7 of 7
  1. #1
    New Lounger
    Join Date
    Feb 2002
    Location
    Denver
    Posts
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Sizing Access Window (Access 97)

    Is there a way to size the Access application window in Access 97 in VBA? I want to be able to set it the application window to be the same size as the "main" form that I have open at the beginning (so it would run in the Form_Load event).

  2. #2
    Plutonium Lounger
    Join Date
    Dec 2000
    Location
    Sacramento, California, USA
    Posts
    16,775
    Thanks
    0
    Thanked 1 Time in 1 Post

    Re: Sizing Access Window (Access 97)

    Usually the way you size the application window is to drag the handles for the main window, then close the database. The next time you open it, it should come up that same size. Otherwise, you have to resort to Windows API calls to resize the application window.
    Charlotte

  3. #3
    3 Star Lounger
    Join Date
    Nov 2001
    Location
    Atlanta, Georgia, USA
    Posts
    274
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: Sizing Access Window (Access 97)

    Here is a routine that opens your forms and centers them on the screen.
    Place this in the declarations section of a module
    Global g_ScreenWidth As Integer ' Screen width for CenterForm sub
    Global g_ScreenHeight As Integer ' Screen height for CenterForm sub

    Here is the function:
    Sub CenterForm(p_Width As Integer, p_Height As Integer)
    ' Arguments are in twips where 1 inch = 1440 twips
    ' If form has title bar, add 240 twips to height argument
    '
    ' Resolution Dimensions Title Bar, Menu Bar, and Tool Bar):
    '
    ' Resolution ScreenWidth ScreenHeight
    ' 640x480 9600 5720
    ' 600x800 12000 7400

    Dim ScreenWidth As Integer
    Dim ScreenHeight As Integer
    Dim VertPos As Integer
    Dim HorPos As Integer

    ' Set ScreenWidth & ScreenHeight according to resolution (see table above)
    ScreenWidth = 12000
    ScreenHeight = 7400

    If p_Height > ScreenHeight Then
    VertPos = 0
    Else
    VertPos = (ScreenHeight - p_Height) / 2
    End If

    If p_Width > ScreenWidth Then
    HorPos = 0
    Else
    HorPos = (ScreenWidth - p_Width) / 2
    End If

    DoCmd.MoveSize HorPos, VertPos, p_Width, p_Height

    End Sub
    Then in the OnOpen Event of the form use
    CenterForm 2880, 2880 'If your form was 2" x 2"

  4. #4
    New Lounger
    Join Date
    Feb 2002
    Location
    Denver
    Posts
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: Sizing Access Window (Access 97)

    Thanks Charlotte and ready4data for the replies. However, what I'm looking for and can't seem to find *anywhere* is how to control the main Access window with code. I manage about 12 databases, some requiring more screen real estate than others and I'd like to set the windows according to the needs of each one, if that's possible, instead of having to manually resize the window each time one opens up. I believe it has something to do with the hWndAccessApp property or the hWnd property, and then some declarations to some Windows API's (I'm on NT btw), but even Google came up with only resizing the forms. And my VBA skills are limited pretty much to Access...the fog tends to set in when API calls are required. But I'm willing to work through whatever is required.

    Thanks everyone.

  5. #5
    New Lounger
    Join Date
    Feb 2002
    Location
    Denver
    Posts
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: [SOLUTION] Sizing Access Window (Access 97)

    Well, darn it, I couldn't leave it alone and I found the answer...with a search on Google on the words "hWndAccessApp" and "resize" . For the record here it is:

    '================================================= =====
    'start of code in module

    Option Compare Database
    Option Explicit

    Declare Sub SetWindowPos Lib "User32" (ByVal hWnd&, _
    ByVal hWndInsertAfter&, _
    ByVal X&, ByVal Y&, ByVal cX&, _
    ByVal cY&, ByVal wFlags&)

    Global Const HWND_TOP = 0 'Moves MS Access window to top of Z-order.
    'Values for wFlags.
    Global Const SWP_NOZORDER = &H4 'Ignores the hWndInsertAfter.

    Public Function SizeAccess(cLeft As Long, cTop As Long, cWidth As Long, cHeight As Long) As Boolean
    On Error GoTo SizeAccess_Err
    Dim h As Long

    'Get handle to Microsoft Access.
    h = Application.hWndAccessApp

    'Position Microsoft Access.
    SetWindowPos h, HWND_TOP, cLeft, cTop, cWidth, cHeight, SWP_NOZORDER
    SizeAccess = True

    SizeAccess_Exit:
    Exit Function

    SizeAccess_Err:
    MsgBox Err.Number & ": " & Err.description
    SizeAccess = False
    GoTo SizeAccess_Exit

    End Function

    'End of code
    '================================================= =====

    The function SizeAccess can be called from any event.

    The source of this solution comes from MS itself in its Knowledgebase article :

    "ACC: How to Position Microsoft Access on the Screen (95/97) (Q148856)"

    The end.

  6. #6
    4 Star Lounger
    Join Date
    Jan 2001
    Location
    Altnau, Thurgau, Switzerland
    Posts
    447
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: [SOLUTION] Sizing Access Window (Access 97)

    The following might be useful for you.


    Declare Function GetDeviceCaps Lib "gdi32" (ByVal hdc As Long, ByVal nIndex As Long) As Long
    Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long

    Public Function GetScreenXResolution() As Long

    Const HORZRES = 8 ' Horizontal width in pixels

    Dim ScreenHDC As Long
    ScreenHDC = GetDC(0)

    GetScreenXResolution = GetDeviceCaps(ScreenHDC, HORZRES)
    End Function

    Public Function GetScreenYResolution() As Long

    Const VERTRES = 10 ' Vertical width in pixels

    Dim ScreenHDC As Long
    ScreenHDC = GetDC(0)

    GetScreenYResolution = GetDeviceCaps(ScreenHDC, VERTRES)
    End Function

  7. #7
    New Lounger
    Join Date
    Feb 2002
    Location
    Denver
    Posts
    4
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Re: [SOLUTION] Sizing Access Window (Access 97)

    Thanks. They will come in handy.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •