Formulier passend maken op scherm

Status
Niet open voor verdere reacties.

Rap261

Gebruiker
Lid geworden
2 sep 2008
Berichten
273
Goedemorgen,

Ik zit met het volgende:

Ik heb bijvoorbeeld twee PC's. Een met een schermresolutie van 1280x1024 en de ander met een schermresolutie van 1024x768.
Om de database in Access bij het openen automatisch het gehele scherm te laten vullen heb ik onderstaande code op het Forum gevonden

Code:
Private Sub Form_Open(Cancel As Integer)
DoCmd.RunCommand acCmdSizeToFitForm
End Sub

Het probleem is alleen dat het scherm niet automatisch wordt aangepast wanneer de database wordt geopend op een PC met een andere resolutie. (Let op dit zijn tal van PC met verschillende resoluties)

Moet ik nog een aanpassing doen in de code of moet voor mijn probleem iets anders doen.

Graag jullie hulp en daarvoor alvast bedankt!
 
De volgende code maximaliseert je form afhankelijk van de grootte van je Access window.
Code:
Option Compare Database
Option Explicit

Type RECT
   Left   As Long
   Top    As Long
   Right  As Long
   Bottom As Long
End Type

Declare Function IsZoomed Lib "user32" (ByVal Hwnd As Long) As Long
Declare Function GetWindowRect Lib "user32" (ByVal Hwnd As Long, lpRect As RECT) As Long
Declare Function ShowWindow Lib "user32" (ByVal Hwnd As Long, ByVal nCmdShow As Long) As Long
Declare Function MoveWindow Lib "user32" (ByVal Hwnd As Long, ByVal X As Long, ByVal Y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long
Declare Function GetParent Lib "user32" (ByVal Hwnd As Long) As Long

Const SW_MAXIMIZE = 3
Const SW_SHOWNORMAL = 1

'Type the following procedure:
Sub MaximizeRestoredForm(F As Form)
    Dim MDIRect As RECT
    Dim RetVal As Long
    
    ' If the form is maximized, restore it.
    If IsZoomed(F.Hwnd) <> 0 Then
        RetVal = ShowWindow(F.Hwnd, SW_SHOWNORMAL)
    End If
    
    ' Get the screen coordinates and window size of the
    ' MDIClient window.
    RetVal = GetWindowRect(GetParent(F.Hwnd), MDIRect)
    
    ' Move the form to the upper-left corner of the MDIClient
    ' window (0,0) and size it to the same size as the
    ' MDIClient window.
    RetVal = MoveWindow(F.Hwnd, 0, 0, MDIRect.Right - MDIRect.Left - 4, MDIRect.Bottom - MDIRect.Top - 4, True)
    RetVal = ShowWindow(F.Hwnd, SW_SHOWNORMAL)
    
End Sub
Let erop dat DoCmd.Maximize iets anders doet.

HTH:D
 
hoe nu verder?

Kan iemand mij vertellen hoe ik de door Guus2005 opgegeven code kan aanroepen?
Ik hep het in een nieuwe Mudule gezet, en nu?

vast dank
 
Kan je bij het openen van het formulier definieren.
Eigenschappen formulier -> gebeurtenis -> Bij openen

Code:
Private Sub Form_Open(Cancel As Integer)  
  
MaximizeRestoredForm Me  
  
End Sub
 
Het is een procedure die prima zou moeten werken. Misschien moet je een verwijzing naar de Microsoft Office 12.0 Object Library aanzetten...
Bij doet-ie het namelijk tadellos... Net als bij Greenery, neem ik aan ;)
 
Laten we eens doen of ik niets van Access snap (dan zitten we er niet ver naast) begrijp ik het goed dat ik de code van Guus die ik in een module heb geplaatst. Met de code van Greenery moet oproepen in het "on open" event van elk form die ik aan wil passen?
 
@assessor:

Dat zie je inderdaad goed. De procedure die Guus gepost heeft, zet je in een Module, maakt niet uit welke als je al een module hebt, of een nieuwe.
Vervolgens zet je bij elk formulier dat je op deze manier wilt openen de code die Greenery als voorbeeld heeft gepost.
 
Oké, dat werkt, dat was niet zo moeilijk.
Maar wat is nu de meerwaarde van al die code als je hezelfde kan bereiken met het simpele "maximize" in je code of vanuit een macro?

Wat ik hoopte was dat ik hiermee de inhoud van een form zou "zoomen" naar gelang de grootte van het gebruikte scherm/resolutie.

Dus mooi beeldvullend op een 19" scherm (1200X1600) maar dat je op een 15" (1024x768) niet ineens maar de helft van je gegevens niet ziet.
 
Maximize maximaliseert je formulier binnen Access maar stemt de grootte niet af op de schermgrootte/resulotie.
Dat afstemmen valt binnen Windows, niet binnen Access.
En voor dat afstemmen gebruik je de code zoals Guus die heeft neergezet.

Grtz,

Tardis
 
In VBA op Extra klikken in menubalk, dan Verwijzingen selecteren.
In pop-up Verwijzingen vinkje zetten voor Microsoft Office 12.0 Object Library.
 

Bijlagen

  • ma12.jpg
    ma12.jpg
    57,5 KB · Weergaven: 124
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan