Resolution Ecran ??

Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003 - 20 nov. 2003 à 11:38
 cs_couin - 11 août 2005 à 13:55
Salut
j ai fait uner appli mais certains utilisateurs ont des vieux ordis avec des resolutions faible.
Ma question est la suivante :

yaurai til moyen qu au demarage il resize tt mes fenetres et les elements de ma fenetre en fonction de la taille de l; ecran ?

Merci ;)

--
Tetris

30 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 nov. 2003 à 13:15
Bien sur...

tu peux recuperer les dimensions de ton ecran assez facilement (Screen.Width & screen.Height)

dans le Form_Resize (ou Form_Load), tu peux placer tous tes composants dynamiquement..

mais rien d'automatique n'existe.

By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003
20 nov. 2003 à 13:24
Ca veut dire ke je dois faire une fonction qui va resize chaque elements en fonction de la resolution ?

cad un truyc ds le genre ? ?

Sub resize_Fom()
lblStep1.Width = Screen.Width + 335
lblStep1.Height = Screen.Height + 15
lblStep2.Width = Screen.Width + 440
lblStep2.Height = Screen.Height + 18
lblStep3.Width = Screen.Width + 450
lblStep3.Height = Screen.Height + 20
......
lblStepX.Width = Screen.Width + 335
lblStepX.Height = Screen.Height + 15

lblStepxxx.Width =

end Sub

Mais si j ai 150 boutons textbox ... a resize ?? je V devoir tt me taper ds cet esprit ???
--
Tetris
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 nov. 2003 à 14:25
on peut rien te cacher......

By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003
20 nov. 2003 à 15:20
!!!!
C pas possible
je crois pas qque les gars ki ont coder VB on pas pense a ca ??
!!!!!
j abandonne dans ce cas la .....

--
Tetris
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_joflo Messages postés 156 Date d'inscription mardi 9 juillet 2002 Statut Membre Dernière intervention 23 septembre 2011
20 nov. 2003 à 17:26
salut

dans option explicit
Dim object As Object

dans form load tu mmets

'***********determiner la resolution de l'ecran ****************
largeur = Screen.Width / Screen.TwipsPerPixelX
haut = Screen.Height / Screen.TwipsPerPixelXIf largeur 800 Then Form1.Height 9000: Form1.Width = 12000If largeur 1024 Then Form1.Height 11500: Form1.Width = 15400
'***************************************************************
mem_long = 0
mem_long = Form1.Width

On Error Resume Next
Me.Tag = CStr(Me.Width) & ":" & CStr(Me.Height)
For Each object In Me
object.Tag = CStr(object.x1) & ":" & CStr(object.y1) & ";" & CStr(object.X2) & "!" & CStr(object.y2)
object.Tag = CStr(object.Width) & ":" & CStr(object.Height) & ";" & CStr(object.Left) & "!" & CStr(object.Top)
Next object

et enfin dans form_resize

On Error Resume Next
For Each object In Me
'pour les graphiques
object.x1 = Val(Mid(object.Tag, 1, InStr(object.Tag, ":") - 1)) * Me.Width / Val(Mid(Me.Tag, 1, InStr(Me.Tag, ":") - 1))
object.y1 = Val(Mid(object.Tag, InStr(object.Tag, ":") + 1, Len(object.Tag) - InStr(object.Tag, ":") + 1)) * Me.Height / Val(Mid(Me.Tag, InStr(Me.Tag, ":") + 1, Len(Me.Tag) - InStr(Me.Tag, ":") + 1))
object.X2 = Val(Mid(object.Tag, InStr(object.Tag, ";") + 1, Len(object.Tag) - InStr(object.Tag, ";") + 1)) * Me.Width / Val(Mid(Me.Tag, 1, InStr(Me.Tag, ":") - 1))
object.y2 = Val(Mid(object.Tag, InStr(object.Tag, "!") + 1, Len(object.Tag) - InStr(object.Tag, "!") + 1)) * Me.Height / Val(Mid(Me.Tag, InStr(Me.Tag, ":") + 1, Len(Me.Tag) - InStr(Me.Tag, ":") + 1))
'pour le reste
object.Width = Val(Mid(object.Tag, 1, InStr(object.Tag, ":") - 1)) * Me.Width / Val(Mid(Me.Tag, 1, InStr(Me.Tag, ":") - 1))
object.Height = Val(Mid(object.Tag, InStr(object.Tag, ":") + 1, Len(object.Tag) - InStr(object.Tag, ":") + 1)) * Me.Height / Val(Mid(Me.Tag, InStr(Me.Tag, ":") + 1, Len(Me.Tag) - InStr(Me.Tag, ":") + 1))
object.Left = Val(Mid(object.Tag, InStr(object.Tag, ";") + 1, Len(object.Tag) - InStr(object.Tag, ";") + 1)) * Me.Width / Val(Mid(Me.Tag, 1, InStr(Me.Tag, ":") - 1))
object.Top = Val(Mid(object.Tag, InStr(object.Tag, "!") + 1, Len(object.Tag) - InStr(object.Tag, "!") + 1)) * Me.Height / Val(Mid(Me.Tag, InStr(Me.Tag, ":") + 1, Len(Me.Tag) - InStr(Me.Tag, ":") + 1))
'pour les fonts
object.Font.Size = (Me.Font.Size * (Form1.Width / mem_long))
Next object

bon courage
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 nov. 2003 à 17:39
Dis mois, je, tu t'es dechainé !!

bon boulot, ca devrai fonctionner....

j'ai corrigé (et allegé le code)

largeur = Screen.Width / Screen.TwipsPerPixelX
haut = Screen.Height / Screen.TwipsPerPixelXIf largeur 800 Then Me.Height 9000: Me.Width = 12000If largeur 1024 Then Me.Height 11500: Me.Width = 15400
'***************************************************************
mem_long = 0
mem_long = Me.Width

Me.Tag = CStr(Me.Width) & ":" & CStr(Me.Height)
For Each Object In Me
    If TypeOf Object Is Line Then
        Object.Tag = CStr(Object.X1) & ":" & CStr(Object.Y1) & ":" & CStr(Object.X2) & ":" & CStr(Object.Y2)
    Else
        Object.Tag = CStr(Object.Width) & ":" & CStr(Object.Height) & ":" & CStr(Object.Left) & ":" & CStr(Object.Top)
    End If
Next Object

On Error Resume Next
Dim W As Long, H As Long, L As Long, T As Long, MW As Long, MH As Long
Dim Object As Control
MW = Val(Split(Me.Tag, ":")(0))
MH = Val(Split(Me.Tag, ":")(1))
For Each Object In Me
    W = Val(Split(Object.Tag, ":")(0))
    H = Val(Split(Object.Tag, ":")(1))
    L = Val(Split(Object.Tag, ":")(2))
    T = Val(Split(Object.Tag, ":")(3))
    If TypeOf Object Is Line Then
        Object.X1 = W * Me.Width / MW
        Object.Y1 = H * Me.Height / MH
        Object.X2 = L * Me.Width / MW
        Object.Y2 = T * Me.Height / MH
    Else
        'pour le reste
        Object.Width = W * Me.Width / MW
        Object.Height = H * Me.Height / MH
        Object.Left = L * Me.Width / MW
        Object.Top = T * Me.Height / MH
        
        'pour les fonts
        On Error Resume Next
        Object.Font.Size = (Me.Font.Size * (Me.Width / mem_long))
        On Error GoTo 0
    End If
Next Object


By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 nov. 2003 à 17:42
en tout cas, jo, je dois dire que ca marche très bien, chapeau ;-)

By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003
20 nov. 2003 à 18:27
Bon moi j ai trop mal :(

a chaque fois que tu fais : "Me.quelquechose"
Me faut pas le remplacer par frm1 ?

ya pas moyen plutot de mettre une fonction resize en module et de la rapeller kan on en a besoin ?

sinon un GRAND merci a vous pour ce code :)

--
Tetris
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 nov. 2003 à 02:18
NON !! Me, tu le laisse....

ca signifie "Feulle ou est ce code" donc Form1 !!

ca permet de remettre ce code dans d'autres forms, sans modifier une ligne !

By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003
24 nov. 2003 à 15:12
Bon j ai encore un probleme
j ai copier le code mais il y a un probleme
il me met un message d erreur :

Runtime Error '383'
'Height' Proprety is read-only

Tetris
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 nov. 2003 à 15:48
C'est tout de même etrange que tu aies des erreurs, alors qu'il y a un "On error Resume Next"........

By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003
24 nov. 2003 à 15:52
ouep je sais ...

mais quand je fait du pas a pas pour voir ou ca bloque
j ai l impression que 1 des elements de ma fenetre pose un probleme mais je ne sais pas du tt lequel :(

Tetris
0
Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003
24 nov. 2003 à 16:05
bon kan je regarde la valeur de Height au moment ou ca bloque je m appercoi que C la valeur de la taille de ma fenetre . Donc a mon avis il resize bien les elements mais mon prog n arrive pas a resize la fenetre en elle mm :(

voici les deux fonctions en question :

Private Sub Form_Load()
txtRmpd.Enabled = False
lblMsg.Visible = False
lblChoice.Visible = False
lblStepVI.Visible = False
txtStepVI.Visible = False
'ProgressBar1.Visible = False
'******************************
Dim largeur, haut
largeur = Screen.Width / Screen.TwipsPerPixelX
haut = Screen.Height / Screen.TwipsPerPixelXIf largeur 800 Then Me.Height 9000: Me.Width = 12000If largeur 1024 Then Me.Height 11500: Me.Width = 15400
'***************************************************************
mem_long = 0
mem_long = Me.Width

Me.Tag = CStr(Me.Width) & ":" & CStr(Me.Height)
For Each Object In Me
If TypeOf Object Is Line Then
Object.Tag = CStr(Object.X1) & ":" & CStr(Object.Y1) & ":" & CStr(Object.X2) & ":" & CStr(Object.Y2)
Else
Object.Tag = CStr(Object.Width) & ":" & CStr(Object.Height) & ":" & CStr(Object.Left) & ":" & CStr(Object.Top)
End If
Next Object
'******************************
If excel_var = 0 Then
Sheet = 4
open_excel
excel_var = 1
End If
CmbPump.AddItem "T6C Mobile"
CmbPump.AddItem "T6C Industrial"
CmbPump.AddItem "T6D Mobile"
CmbPump.AddItem "T6D Industrial"
CmbPump.AddItem "T6E Mobile & Industrial"
End Sub

Private Sub Form_Resize()
On Error Resume Next
Dim W As Long, H As Long, L As Long, T As Long, MW As Long, MH As Long
Dim Object As Control
MW = Val(Split(Me.Tag, ":")(0))
MH = Val(Split(Me.Tag, ":")(1))
For Each Object In Me
W = Val(Split(Object.Tag, ":")(0))
H = Val(Split(Object.Tag, ":")(1))
L = Val(Split(Object.Tag, ":")(2))
T = Val(Split(Object.Tag, ":")(3))
If TypeOf Object Is Line Then
Object.X1 = W * Me.Width / MW
Object.Y1 = H * Me.Height / MH
Object.X2 = L * Me.Width / MW
Object.Y2 = T * Me.Height / MH
Else
'pour le reste
Object.Width = W * Me.Width / MW
Object.Height = H * Me.Height / MH
Object.Left = L * Me.Width / MW
Object.Top = T * Me.Height / MH

'pour les fonts
On Error Resume Next
Object.Font.Size = (Me.Font.Size * (Me.Width / mem_long))
On Error GoTo 0
End If
Next Object
End Sub

--
Tetris
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 nov. 2003 à 16:09
Ok, il essaie de modifier les dimensions de la fenetre.....

essaies en remplacant :

Else
'pour le reste

par

ElseIf Not TypeOf ctl Is Form Then
'pour le reste

mais je garantie pas : je n'ai pas d'erreur chez moi !

By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003
24 nov. 2003 à 16:44
bon en fait ca bloque sur le premier element qui est une combobox (ce se trouve y faut juste changer une propriete du cmbbox ??) mais avant d arriver au premier element a resize et quand je regarde la valeur d Object il me met parfois 0 parfois false plusieurs fois avant d arriver sur le premier element de ma fenetre .
dsl je sais que je m exprime comme un pied ;)

avant de resize le premier element il boucle 11 fois avant d arriver au premier Element a resize C normal ??
et aussi les 11 premieres fois ou il boucle il met des valeur chelou a Object. genre
False
""
0

--
Tetris
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
24 nov. 2003 à 16:50
Mais c'est rien ca, c'est normal, même !! on ne peux pas modifier la propriete Height d'un comboBox...

met donc ca :

On Error Resume Next
Object.Height = H * Me.Height / MH

(on aurait pu faire aussi un test, et ne pas definir cette propriete si c'est un Combo...)

***********

pour ce qui est des valeurs prises par object, tu t'en fiches, il s'agit de la valeur de la propriete par default de chacun de tes objets...... au pire, fais un Debug.Print Object.Name

By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003
24 nov. 2003 à 16:57
C bon ca marche
;)
je C pas comment vous remerciez les gars ;)

--
Tetris
0
Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003
25 nov. 2003 à 12:42
sniff
G encore parle trop tot ...
kan je suis en 800x600 j ai une erreur :

Run-time Error '9'
subscript out of range ...

a la ligne :

For Each Object In Me
W = Val(Split(Object.Tag, ":")(0)) <==== ICI

Une Idee ?
:(

Tetris
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
25 nov. 2003 à 13:29
Que vaut Object.Tag a ce moment précis ?

By Renfield

[mailto:thomas_reynald@msn.com thomas_reynald@msn.com]

Aucune touche n'a ete blessee lors de la saisie de ce texte.......... ;)
0
Tetris42 Messages postés 53 Date d'inscription lundi 4 août 2003 Statut Membre Dernière intervention 22 décembre 2003
25 nov. 2003 à 13:46
bon j ai fait en mode pas a pas et j ai remarke k en 1024 il execute tt le Form_Load avant d entrer ds Form_Resize
tandis que en 800*600 des kil fini cette ligne il passe ds Form_Resize ?

Sub Form_Resize()
...If largeur 800 Then Me.Height 9000: Me.Width = 12000
...
End Sub

Du Coup il a pas rentre ds ma boucle

For Each Object In Me
...
Tetris
0
Rejoignez-nous