--
Pour écrire à Cyprine de Saint Ovaire :o)
http://irolog.free.fr/cyprine/index.html
"Twitzig" <Twitzig@discussions.microsoft.com> a écrit dans le message de
news: 53C841DE-39E3-4E83-93C5-757A8CF95973@microsoft.com...
J'ai développé une appli en VB6, optimisée en résolution 1024*768.
Comment peut on faire pour que la taille des fenêtres s'adapte
automatiquement en 800*600?
Je sais que ca peut se faire, car j'ai sur mon poste une appli (que je
n'ai
pas développée moi même) qui le fait.....
-- Pour écrire à Cyprine de Saint Ovaire :o) http://irolog.free.fr/cyprine/index.html "Twitzig" a écrit dans le message de news:
J'ai développé une appli en VB6, optimisée en résolution 1024*768.
Comment peut on faire pour que la taille des fenêtres s'adapte automatiquement en 800*600?
Je sais que ca peut se faire, car j'ai sur mon poste une appli (que je n'ai pas développée moi même) qui le fait.....
Je n'ai rien trouvé dans la doc
Si quelqu'un peut m'aider!!!
Salut, bis, version contraire (modif de la feuille), je me suis trompé dans la dernière version, présumant que c'était la défintion d'écran que tu voulais changer, désolé, voici la modif de la form:
' On peut, peut être faire mieux, sans doute, mais voici un truc qui devrait déjà fonctionner, comme on te l'a dit, il va falloir prévoir le mouvement (en Resize) des objets, et les erreurs si la feuille est au maxi par click, ça envoie une erreur refusant d'être modifié (erreur 384) 'code testé 3 grandeurs de form pour 3 écrans (svga, vga, ega généralement) ' objets 'form1 + bouton 1, 2, 3 ''''''''''''''''''''''''''
Option Explicit Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long Dim x As Integer Dim y As Integer ' Sub Form_Load() x = GetSystemMetrics(0) ' taille écran actuelle pixels y = GetSystemMetrics(1) MsgBox x & vbLf & y End Sub ' Sub Command1_Click() ' 1024*768 Form1.Top = 0 Form1.Left = 0 Width = 15480 Height = 11130 End Sub ' Sub Command2_Click() ' 800*600 Form1.Top = 0 Form1.Left = 0 Width = (15480 / 100 * 78) Height = (11130 / 100 * 78) End Sub ' Sub Command3_Click() ' 640*480 Form1.Top = 0 Form1.Left = 0 Width = (15480 / 100 * 75) Height = (11130 / 100 * 75) End Sub
Salut, bis, version contraire (modif de la feuille), je me suis
trompé dans la dernière version, présumant que c'était la défintion d'écran
que tu voulais changer, désolé, voici la modif de la form:
' On peut, peut être faire mieux, sans doute, mais voici un truc qui devrait
déjà fonctionner, comme on te l'a dit, il va falloir prévoir le mouvement
(en Resize) des objets, et les erreurs si la feuille est au maxi par click,
ça envoie une erreur refusant d'être modifié (erreur 384)
'code testé 3 grandeurs de form pour 3 écrans (svga, vga, ega généralement)
' objets
'form1 + bouton 1, 2, 3
''''''''''''''''''''''''''
Option Explicit
Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As
Long) As Long
Dim x As Integer
Dim y As Integer
'
Sub Form_Load()
x = GetSystemMetrics(0) ' taille écran actuelle pixels
y = GetSystemMetrics(1)
MsgBox x & vbLf & y
End Sub
'
Sub Command1_Click() ' 1024*768
Form1.Top = 0
Form1.Left = 0
Width = 15480
Height = 11130
End Sub
'
Sub Command2_Click() ' 800*600
Form1.Top = 0
Form1.Left = 0
Width = (15480 / 100 * 78)
Height = (11130 / 100 * 78)
End Sub
'
Sub Command3_Click() ' 640*480
Form1.Top = 0
Form1.Left = 0
Width = (15480 / 100 * 75)
Height = (11130 / 100 * 75)
End Sub
Salut, bis, version contraire (modif de la feuille), je me suis trompé dans la dernière version, présumant que c'était la défintion d'écran que tu voulais changer, désolé, voici la modif de la form:
' On peut, peut être faire mieux, sans doute, mais voici un truc qui devrait déjà fonctionner, comme on te l'a dit, il va falloir prévoir le mouvement (en Resize) des objets, et les erreurs si la feuille est au maxi par click, ça envoie une erreur refusant d'être modifié (erreur 384) 'code testé 3 grandeurs de form pour 3 écrans (svga, vga, ega généralement) ' objets 'form1 + bouton 1, 2, 3 ''''''''''''''''''''''''''
Option Explicit Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long Dim x As Integer Dim y As Integer ' Sub Form_Load() x = GetSystemMetrics(0) ' taille écran actuelle pixels y = GetSystemMetrics(1) MsgBox x & vbLf & y End Sub ' Sub Command1_Click() ' 1024*768 Form1.Top = 0 Form1.Left = 0 Width = 15480 Height = 11130 End Sub ' Sub Command2_Click() ' 800*600 Form1.Top = 0 Form1.Left = 0 Width = (15480 / 100 * 78) Height = (11130 / 100 * 78) End Sub ' Sub Command3_Click() ' 640*480 Form1.Top = 0 Form1.Left = 0 Width = (15480 / 100 * 75) Height = (11130 / 100 * 75) End Sub
Patrice Henrio
"Twitzig" a écrit dans le message de news:
J'ai développé une appli en VB6, optimisée en résolution 1024*768.
Comment peut on faire pour que la taille des fenêtres s'adapte automatiquement en 800*600?
Je sais que ca peut se faire, car j'ai sur mon poste une appli (que je n'ai pas développée moi même) qui le fait.....
Je n'ai rien trouvé dans la doc
Si quelqu'un peut m'aider!!!
J'ai développé une appli qui s'adapte à tout type d'écran Je te file le code nécessaire qu'il faut écrire dans l'évènement resize de la forme
Private Sub Form_Resize() 'Hauteur et largeur de l'intérieur de la forme. Dim HauteurUtile As Long, LargeurUtile As Long
'Hauteur et largeur de l'intérieur de la forme. 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
'A partir de là on adapte chaque controle '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 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
'modification du ScrollBar de date Dim I As Long With Me.ScrChoixDate .Width = LargeurUtile .Height = HauteurControle .Top = Hauteur + HauteurControle .Left = 0 '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
J'espère que cela pourra te servir, chez moi ça marche impeccable.
"Twitzig" <Twitzig@discussions.microsoft.com> a écrit dans le message de
news: 53C841DE-39E3-4E83-93C5-757A8CF95973@microsoft.com...
J'ai développé une appli en VB6, optimisée en résolution 1024*768.
Comment peut on faire pour que la taille des fenêtres s'adapte
automatiquement en 800*600?
Je sais que ca peut se faire, car j'ai sur mon poste une appli (que je
n'ai
pas développée moi même) qui le fait.....
Je n'ai rien trouvé dans la doc
Si quelqu'un peut m'aider!!!
J'ai développé une appli qui s'adapte à tout type d'écran
Je te file le code nécessaire qu'il faut écrire dans l'évènement resize de
la forme
Private Sub Form_Resize()
'Hauteur et largeur de l'intérieur de la forme.
Dim HauteurUtile As Long, LargeurUtile As Long
'Hauteur et largeur de l'intérieur de la forme.
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
'A partir de là on adapte chaque controle
'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
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
'modification du ScrollBar de date
Dim I As Long
With Me.ScrChoixDate
.Width = LargeurUtile
.Height = HauteurControle
.Top = Hauteur + HauteurControle
.Left = 0
'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
J'espère que cela pourra te servir, chez moi ça marche impeccable.
J'ai développé une appli en VB6, optimisée en résolution 1024*768.
Comment peut on faire pour que la taille des fenêtres s'adapte automatiquement en 800*600?
Je sais que ca peut se faire, car j'ai sur mon poste une appli (que je n'ai pas développée moi même) qui le fait.....
Je n'ai rien trouvé dans la doc
Si quelqu'un peut m'aider!!!
J'ai développé une appli qui s'adapte à tout type d'écran Je te file le code nécessaire qu'il faut écrire dans l'évènement resize de la forme
Private Sub Form_Resize() 'Hauteur et largeur de l'intérieur de la forme. Dim HauteurUtile As Long, LargeurUtile As Long
'Hauteur et largeur de l'intérieur de la forme. 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
'A partir de là on adapte chaque controle '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 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
'modification du ScrollBar de date Dim I As Long With Me.ScrChoixDate .Width = LargeurUtile .Height = HauteurControle .Top = Hauteur + HauteurControle .Left = 0 '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
J'espère que cela pourra te servir, chez moi ça marche impeccable.