Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Pb résolution

1 réponse
Avatar
ROLLOT Pascal Jean
Bonjour,

J'ai un programme VB dévloppé sous une résolution de 800 x 600.
Existe-il une solution pour rendre les fenêtres de ce programme "lisibles"
lorsque je passe sous une résolution de 1280 x 1024.

J'ai des utilisateurs dans les 2 résolutions, certains sont contents
d'autres braillent car ils ne voient rien (trop petit).

Merci de votre aide.

1 réponse

Avatar
Patrice Henrio
On peut donner les dimensions des controles en pourcentage de la taille
écran récupérée à travers l'objet screen.
Voici un exemple. Il faut placer le code dans la méthode resize de la forme
ce qui permet en prime de garder quelque chose de visible quelque soit la
taille de la fenêtre.

Private Sub Form_Resize()
'Hauteur et largeur de l'intérieur de la forme.
Dim HauteurUtile As Long, LargeurUtile As Long

HauteurUtile = Me.ScaleHeight
LargeurUtile = Me.ScaleWidth
HauteurControle = 283 / Screen.TwipsPerPixelY
'283 / Screen.TwipsPerPixelY correspond à 5 mm en hauteur quelque soit la
résolution et l'écran

'La carte est un carré dont le côté vaut au moins 75% de la largeur ou la
hauteur - 4 hauteurs de controle.
'Juste sous la carte on a le HScrollBar qui permet de se déplacer en
longitude
'Le contrôle du dessous est le slider des dates
'Sous ce contrôle se trouvent les labels repérant les dates
If HauteurUtile < 5 * HauteurControle Then Exit Sub

If (HauteurUtile - 3.8 * HauteurControle <= LargeurUtile * 0.75) Then
Hauteur = HauteurUtile - 3.8 * HauteurControle
Else
Hauteur = LargeurUtile * 0.75
End If

'Ne pas oublier la largeur, même si c'est la même valeur que la hauteur, on
ne sait jamais pour le futur
Largeur = Hauteur

'Initialisation de l'écran
Ecran.HautGauche.X = 0
Ecran.HautGauche.Y = 0
Ecran.BasDroite.X = Hauteur
Ecran.BasDroite.Y = Hauteur

'Initialisation des 4 coins
Coins(1) = Ecran.HautGauche
Coins(3) = Ecran.BasDroite
Coins(2).X = Coins(1).X
Coins(2).Y = Coins(3).Y
Coins(4).X = Coins(3).X
Coins(4).Y = Coins(1).Y

'la carte est adaptée pour la taille maximale de la forme
'quand on "resize" la forme, la carte ne se redimensionne pas
'mais elle représente une fenêtre sur la carte maximale.
'C'est utile pour redessiner la carte.
If Not Me.Carte.Visible Then
CoefficientX = (Hauteur * Cos20Degré) / (2 * Sin20Degré)
CoefficientY = CoefficientX * Cos20Degré
End If

'modification de la dimension de la carte
With Me.Carte
.Height = Hauteur
.Width = Hauteur
End With

With Me.CopieCarte
.Height = Hauteur
.Width = Hauteur
End With

'modification du ScrollBar de date
Dim I As Long
With Me.ScrChoixDate
.Width = LargeurUtile
.Height = HauteurControle
.Top = Hauteur + HauteurControle
.Left = 0
.Value = Année
'On place les repères pour les dates de -3100 à 2000, 5 repères (tous les
mille ans)
For I = 1 To 6
Me.LblChoixDate(I).Height = HauteurControle * 0.8
Me.LblChoixDate(I).Top = Hauteur + 2 * HauteurControle
Me.LblChoixDate(I).Left = LargeurUtile * _
((Me.LblChoixDate(I).Caption - .Min) / (.Max -
.Min)) - _
Me.LblChoixDate(I).Width / 2
Next I
End With

'Modification du bouton Options
With Me.CmdLoupe
.Left = Hauteur
.Top = Hauteur
.Height = HauteurControle
.Width = HauteurControle
End With

'modification du ScrollBar Latitude et du scrollBar Longitude
With Me.ScrLat
.Left = Hauteur
.Top = 0
.Height = Hauteur
.Width = HauteurControle
.Value = -Latitude
End With

With Me.ScrLong
.Left = 0
.Top = Hauteur
.Height = HauteurControle
.Width = Hauteur
.Value = Longitude
End With

'Modification du label Copyright
Me.Copyright.Top = Me.Carte.Height - 1.5 * Me.Copyright.Height
Me.Copyright.Left = 0
Me.Copyright.Visible = False

'Modification du FrameInfo
With Me.FrameInfo
.Width = LargeurUtile
.Height = HauteurControle
.Left = 0
.Top = Hauteur + 2.8 * HauteurControle
End With

Dim L As Long
L = 50

With Me.LblCentre
.Left = L
End With

With Me.LblDate
.Left = 2 * L + Me.LblCentre.Width
End With
With Me.Lbloupe
.Left = 3 * L + Me.LblCentre.Width + Me.LblDate.Width
End With

'Modification du WebBrowser Histoire
With Me.WBHistoire
.Width = (Me.ScaleWidth - Me.Carte.Width - HauteurControle)
.Height = Hauteur + HauteurControle
.Top = 0
.Left = Me.Carte.Width + HauteurControle
End With
PositionnerLeWebBrowser

'Modification de la forme et du WebBrowser Dynasties
With FormeDynasties
.Left = (Me.ScaleWidth / 4) * Screen.TwipsPerPixelX
.Top = (Me.ScaleHeight / 4) * Screen.TwipsPerPixelY
.Height = 2 * .Top
.Width = 2 * .Left
End With

'Modification de la boîte de message Loupe
With FormeLoupe
.Left = (Hauteur * Screen.TwipsPerPixelX - .Width) / 2
.Top = (Hauteur * Screen.TwipsPerPixelY - .Height) / 2
End With

End Sub

On peut voir le résultat sur le programme téléchargé à l'adresse ci-dessous.

http://histoiremondiale.free.fr/

"ROLLOT Pascal Jean" a écrit dans le message de news:
O%
Bonjour,

J'ai un programme VB dévloppé sous une résolution de 800 x 600.
Existe-il une solution pour rendre les fenêtres de ce programme "lisibles"
lorsque je passe sous une résolution de 1280 x 1024.

J'ai des utilisateurs dans les 2 résolutions, certains sont contents
d'autres braillent car ils ne voient rien (trop petit).

Merci de votre aide.