OVH Cloud OVH Cloud

Redimensionner les fenêtres

4 réponses
Avatar
Twitzig
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!!!

4 réponses

Avatar
Christian Hugoud
Salut jeune homme,

Tu peux détecter la résolution de l'écran et paramétrer la taille de la
feuille dans son évènement load comme tu veux.

Par contre, pour ce qui de la taille et l'emplacement des contrôles, c'est
tout à la main (évènement resize). Il existe des ocx qui le font pour toi.

Christian

"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!!!


Avatar
Salut,

C'est dans les FAQ VB, à:

http://vb.developpez.com/faq/?page=Systeme#resolution











--
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!!!


Avatar
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
Avatar
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.