Plein écran simplement

Soyez le premier à donner votre avis sur cette source.

Snippet vu 16 784 fois - Téléchargée 28 fois

Contenu du snippet

Voici une facon simple d'adapter votre formulaire à n'importe quelle résolution.

Le principe est de redimentionner le form et chaque contrôle du form a la taille de l'écran, et de les replacer à leur bonne place.

Il faut créer un boutton CmdFermer et placer ce code dans un formulaire.

Source / Exemple :


Option Explicit

Private Declare Function StretchBlt Lib "gdi32.dll" ( _
        ByVal hdc As Long, ByVal x As Long, ByVal y As Long, _
        ByVal nWidth As Long, ByVal nHeight As Long, _
        ByVal hSrcDC As Long, ByVal xSrc As Long, _
        ByVal ySrc As Long, ByVal nSrcWidth As Long, _
        ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long

Private Const SRCCOPY = &HCC0020

Private Sub CmdFermer_Click()
    End
End Sub

Private Sub Form_Load()
    Dim ctl As Control
    Dim HautStd As Integer
    Dim LargStd As Integer
    Dim OldWidthPic As Integer
    Dim OldHeightPic As Integer
    Dim EtatAutoRedraw As Boolean
    
    HautStd = Me.Height
    LargStd = Me.Width
    Me.Move 0, 0, Screen.Width, Screen.Height
    For Each ctl In Me.Controls
        If TypeOf ctl Is Timer Then
        ElseIf TypeOf ctl Is Line Then
            With ctl
                .X1 = ctl.X1 * Me.Width / LargStd
                .X2 = ctl.X2 * Me.Width / LargStd
                .Y1 = ctl.Y1 * Me.Height / HautStd
                .Y2 = ctl.Y2 * Me.Height / HautStd
            End With
        ElseIf TypeOf ctl Is Shape Then
            ctl.Move ctl.Left * Me.Width / LargStd, ctl.Top * Me.Height / HautStd, ctl.Width * Me.Width / LargStd, ctl.Height * Me.Height / HautStd
        ElseIf TypeOf ctl Is ComboBox Then
            ctl.Move ctl.Left * Me.Width / LargStd, ctl.Top * Me.Height / HautStd, ctl.Width * Me.Width / LargStd
        ElseIf TypeOf ctl Is PictureBox Then
            OldWidthPic = ctl.Width
            OldHeightPic = ctl.Height
            'On sauvegarde l'état de l'AutoRedraw et on le met à True
            EtatAutoRedraw = ctl.AutoRedraw
            ctl.AutoRedraw = True
            'On redimensionne le controle PictureBox
            ctl.Move ctl.Left * Me.Width / LargStd, ctl.Top * Me.Height / HautStd, ctl.Width * Me.Width / LargStd, ctl.Height * Me.Height / HautStd
            'on redimensionne aussi l'image dans la picturebox
            StretchBlt ctl.hdc, 0, 0, ctl.Width, ctl.Height, ctl.hdc, 0, 0, OldWidthPic, OldHeightPic, SRCCOPY
            'On efface l'ancienne image qui reste incrustée sinon
            ctl.Refresh
            'On restaure l'état précédent
            ctl.AutoRedraw = EtatAutoRedraw
        'Prise en compte des controls non redimensionnables(CommonDialog et Timer)
        ElseIf Not TypeOf ctl Is Timer Then 'Ajoutez "And Not TypeOf ctl Is CommonDialog" si vous utilisez des CommonDialogs
            'Le contrôle est standard
            ctl.Move ctl.Left * Me.Width / LargStd, ctl.Top * Me.Height / HautStd, ctl.Width * Me.Width / LargStd, ctl.Height * Me.Height / HautStd
            ctl.FontSize = ctl.FontSize * Me.Width / 12000 'Plus le chiffre est grand plus les polices sont petites
        End If
    Next ctl
End Sub

Conclusion :


Hautstd et LargStd sont la taille de la form avant d'être adapter à la résolution de l'écran.

Vous pouvez ajouter autant de cas particulier que vous le voulez pour chaque contrôle spécifique...

A noter aussi qu'un select case ne marche pas avec TypeOf.

Astuces :
- Pour que les controles garde la même forme il faut que le form ait un ratio de 1.333 (800*600 par exemple)
- Pour avoir un vrai effet de plein écran vous pouvez mettre la propriété BorderStyle du form à None (penser à prévoir le boutton pour fermer l'application !)

A voir également

Ajouter un commentaire Commentaires
Messages postés
2
Date d'inscription
mercredi 19 août 2009
Statut
Membre
Dernière intervention
31 août 2010

Un bon code qui est clair . . . Quoi de plus ?
Messages postés
10
Date d'inscription
lundi 2 février 2009
Statut
Membre
Dernière intervention
24 novembre 2009

Bonjour, tout d'abord merci pour ce programme bien pratique mais j'ai un problème pour mon application. En effet, si on rajoute un spinbutton ou un srollbar dans le userform1 le fichier ne marche plus?? Je ne comprend pas est ce que quelqu'un pourrait m'éclairer?
Merci d'avance
Messages postés
3
Date d'inscription
jeudi 18 mai 2006
Statut
Membre
Dernière intervention
25 juillet 2006

Bonjour,

J'ai quelques soucis à intégrer ce code sur du Access 200 (en vba donc) car il ne reconnait pas certaines propriétés essentielles (comme Me.Height ou Screen.width).

Auriez-vous une solution de remplacement afin que je puisse dq même redimensionner mon formulaire Access?

Je vous remercie d'avance, a bientôt !
Messages postés
8
Date d'inscription
samedi 13 juin 2009
Statut
Membre
Dernière intervention
7 novembre 2007

Patinho> il y a peut etre un objet dans ta form qui n'est pas supporté par ce code.

Arnor2000> super code qui m'a beaucoup aidé >> 10/10
Messages postés
1
Date d'inscription
lundi 18 octobre 2004
Statut
Membre
Dernière intervention
8 février 2006

Bonjour à tous,
J'ai essayé de mettre cette boucle dans mon programme car je voulais qui s'adapte à toutes les configurations d'écrans. Ok, ca marche mais une erreur survient aussitôt. Il écrit "Run-time error 438" est en dessous "Object doesn't support this property or method". SVP help me.
Et bonne continuation à tous
Afficher les 18 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.