• Sizing Access Window (Access 97)

    Author
    Topic
    #366539

    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).

    Viewing 1 reply thread
    Author
    Replies
    • #568807

      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.

    • #568843

      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
      ‘ 640×480 9600 5720
      ‘ 600×800 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″

      • #568912

        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.

        • #568923

          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.

          • #569077

            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

    Viewing 1 reply thread
    Reply To: Sizing Access Window (Access 97)

    You can use BBCodes to format your content.
    Your account can't use all available BBCodes, they will be stripped before saving.

    Your information: