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).
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
'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 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.
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
'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 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" <news@microsoft.com> a écrit dans le message de news:
O%23eRtwvPHHA.404@TK2MSFTNGP02.phx.gbl...
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).
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
'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 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).