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

pbs avec interface graphique suivant chgt de la résolution écran

7 réponses
Avatar
Gandalf
Je me suis fait une appli avec une interface (en fait position des controls
dans une form comme des textbox, des picture box,...). Comment faire pour
que l'interface soit modifiée proportionnellement à la résolution de l'écran
?


Aujourd'hui pour une appli développée en 1024x 728 (c'est dans cette
résolution que je place les controls), des controls sont tronqués en 800x600
et l'appli n'apparait que dans un partie de l'écran pour une résolution >
1024x768.

De plus, l'application ne prends pas tous l'écran sur un ordinateur portable
même en 1024x728 ???. Je ne comprends pas !


Merci de m'aider...

7 réponses

Avatar
Christophe
Bonjour,

Utilises l''objet Screen
Screen.height
Screen.width vont te donner la taille de l'écran.

L'api getclientrect te permet d'obtenir la taille de la zone client d'une
fenetre.


Christophe Vergon
"Gandalf" a écrit dans le message de news:
#$
Je me suis fait une appli avec une interface (en fait position des


controls
dans une form comme des textbox, des picture box,...). Comment faire pour
que l'interface soit modifiée proportionnellement à la résolution de


l'écran
?


Aujourd'hui pour une appli développée en 1024x 728 (c'est dans cette
résolution que je place les controls), des controls sont tronqués en


800x600
et l'appli n'apparait que dans un partie de l'écran pour une résolution >
1024x768.

De plus, l'application ne prends pas tous l'écran sur un ordinateur


portable
même en 1024x728 ???. Je ne comprends pas !


Merci de m'aider...




Avatar
Gandalf
En effet, j'utilise déjà screen.height et .width, et cela me permet
d'agrandir la fenêtre de l'application en fonction de la résolution de
l'écran.
Le problème, c'est que les controls ne suivent pas proportionnellement
lorsqu'on étire la fenêtre et on se retrouve avec une fenêtre plein écran
mais les controls sont rassemblés que sur une partie de l'écran (de plus en
plus petite lorsqu'on augmente la résolution de l'écran). Conclusion : la
position des controls qui donnait une interface agréable occupant tout
l'écran en 1024x 768 n'est pas gardé lorsqu'on change de résolution.

j'aimerai donc savoir comment faire suivre proportionnellement la position
des controls suivant la résolution de l'écran ?



"Christophe" a écrit dans le message de news:
blpejv$pn0$
Bonjour,

Utilises l''objet Screen
Screen.height
Screen.width vont te donner la taille de l'écran.

L'api getclientrect te permet d'obtenir la taille de la zone client d'une
fenetre.


Christophe Vergon
"Gandalf" a écrit dans le message de news:
#$
> Je me suis fait une appli avec une interface (en fait position des
controls
> dans une form comme des textbox, des picture box,...). Comment faire


pour
> que l'interface soit modifiée proportionnellement à la résolution de
l'écran
> ?
>
>
> Aujourd'hui pour une appli développée en 1024x 728 (c'est dans cette
> résolution que je place les controls), des controls sont tronqués en
800x600
> et l'appli n'apparait que dans un partie de l'écran pour une résolution

> 1024x768.
>
> De plus, l'application ne prends pas tous l'écran sur un ordinateur
portable
> même en 1024x728 ???. Je ne comprends pas !
>
>
> Merci de m'aider...
>
>




Avatar
Adam Pietrasiewicz
<<< Attention - mon adresse dans l'entete de ce message >>>
<<< est une adresse ANTISPAM - pour m'ecrire cliquez sur >>>
<<< http://cerbermail.com/?DQr0g2Y88R >>>
=================================================== Le 05 pa¼dziernika 2003 23:36:45 Gandalf a ecrit dans un message
news:eWr#


j'aimerai donc savoir comment faire suivre proportionnellement la position
des controls suivant la résolution de l'écran ?



Nous avons deux types de proprietes dont nous pouvons nous servir sur
un Form:

Form.height et Form.width

et

Form.ScaleHeight et Form.ScaleWidth

Il y a plusieurs facons de proceder pour que tous les controles soient
proportionnels a la taille de l'ecran, je te presenterai la mienne,
qui n'est peut etre pas la meilleure, mais elle marche et je ne
connais qu'elle.

Etape 1: Creation de la fenetre, positionnement des controles,
positionnement des tailles de police etc etc - pour l'instant rien de
special. Tu crees la taille de la fenetre adaptee a la resolution
800*600.

Etape 2: Tu fixes les proprietes Form.ScaleHeight et Form.ScaleWidth a
1 (un).

Etape 3: Dans l'ecvenement "Resize" de la Form tu mets le code
suivant:

Dim i as long

for i = 0 to me.controls.count - 1
Me.controls(i).height = me.controls(i).height * me.scaleheight
Me.controls(i).width = me.controls(i).width * me.scalewidth
Me.controls(i).top = me.controls(i).top * me.scaleheight
next

Attention - ce code ne marche qu'au debut du programme - il ne va pas
fonctionner correctement au moment du changement de la taille de la
fenetre au cours du programme. Il est donc pratique de l'utiliser que
p.ex. si tu aggrandis ton ecran en mode plein ecran une fois, au
debut.

Si, par contre, tu veux pouvoir changer dynamiquement la taille de
l'ecran au cours de l'execution de ton programme tu dois garder
quelque part les tailles initiales de tes controles - soit en dur dans
le programme, soit dans des variables appropriees, et a ce moment,
dans l'evenement form.resize tu feras:

for i = 0 to me.controls.count - 1
Me.controls(i).height = Variable.qui.contient.la.hauteur.initiale.du.controle(i) * me.scaleheight
Me.controls(i).width = Variable.qui.contient.la.longeur.initiale.du.controle(i) * me.scalewidth
Me.controls(i).top = Variable.qui.contient.le.top.initiale.du.controle(i) * me.scaleheight
next

Ca marche pas mal. Il y a des problemes de positionnement pour
certains cas, mais une fois que tu arriveras a manipuler ca, tu sauras
te debrouiller pour ce cas speciaux.

--
Adam Pietrasiewicz
Pologne


---
Ten list zosta³ wys³any przy u¿yciu Go³±bka http://www.amsoft.com.pl/golabek
Avatar
Patrice Henrio
Je redimensionne les contrôles lors de l'initialisation.
Si mes contrôles sont bons avec une résolution 860x600, j'utilise une règle
de trois pour trouver les dimensions adéquates. De même pour les fonts.

"Gandalf" a écrit dans le message de
news:eWr%
En effet, j'utilise déjà screen.height et .width, et cela me permet
d'agrandir la fenêtre de l'application en fonction de la résolution de
l'écran.
Le problème, c'est que les controls ne suivent pas proportionnellement
lorsqu'on étire la fenêtre et on se retrouve avec une fenêtre plein écran
mais les controls sont rassemblés que sur une partie de l'écran (de plus


en
plus petite lorsqu'on augmente la résolution de l'écran). Conclusion : la
position des controls qui donnait une interface agréable occupant tout
l'écran en 1024x 768 n'est pas gardé lorsqu'on change de résolution.

j'aimerai donc savoir comment faire suivre proportionnellement la position
des controls suivant la résolution de l'écran ?



"Christophe" a écrit dans le message de news:
blpejv$pn0$
> Bonjour,
>
> Utilises l''objet Screen
> Screen.height
> Screen.width vont te donner la taille de l'écran.
>
> L'api getclientrect te permet d'obtenir la taille de la zone client


d'une
> fenetre.
>
>
> Christophe Vergon
> "Gandalf" a écrit dans le message de news:
> #$
> > Je me suis fait une appli avec une interface (en fait position des
> controls
> > dans une form comme des textbox, des picture box,...). Comment faire
pour
> > que l'interface soit modifiée proportionnellement à la résolution de
> l'écran
> > ?
> >
> >
> > Aujourd'hui pour une appli développée en 1024x 728 (c'est dans cette
> > résolution que je place les controls), des controls sont tronqués en
> 800x600
> > et l'appli n'apparait que dans un partie de l'écran pour une


résolution
>
> > 1024x768.
> >
> > De plus, l'application ne prends pas tous l'écran sur un ordinateur
> portable
> > même en 1024x728 ???. Je ne comprends pas !
> >
> >
> > Merci de m'aider...
> >
> >
>
>




Avatar
Gandalf
Merci pour Adam, Christophe et Patrice.

je vois que la méthode de Patrice et Adam sont similaires. Je pensais que VB
pouvait gérer la différence de résolution mais à priori il n'y a pas
beaucoup de choix que de redimensionner proportionnellement chaque control
(ainsi que leur positionnement).

Par contre, je n'ai pas très bien compris la méthode de Christophe.
En particulier les instructions suivantes :
"dummy& = GetClientRect&(Me.hwnd, myrect)
Pctloupe.Width = Pctscreen.ScaleX(myrect.Right, 3, 1) - Pctscreen.Width"


"Gandalf" a écrit dans le message de news:
eWr#
En effet, j'utilise déjà screen.height et .width, et cela me permet
d'agrandir la fenêtre de l'application en fonction de la résolution de
l'écran.
Le problème, c'est que les controls ne suivent pas proportionnellement
lorsqu'on étire la fenêtre et on se retrouve avec une fenêtre plein écran
mais les controls sont rassemblés que sur une partie de l'écran (de plus


en
plus petite lorsqu'on augmente la résolution de l'écran). Conclusion : la
position des controls qui donnait une interface agréable occupant tout
l'écran en 1024x 768 n'est pas gardé lorsqu'on change de résolution.

j'aimerai donc savoir comment faire suivre proportionnellement la position
des controls suivant la résolution de l'écran ?



"Christophe" a écrit dans le message de news:
blpejv$pn0$
> Bonjour,
>
> Utilises l''objet Screen
> Screen.height
> Screen.width vont te donner la taille de l'écran.
>
> L'api getclientrect te permet d'obtenir la taille de la zone client


d'une
> fenetre.
>
>
> Christophe Vergon
> "Gandalf" a écrit dans le message de news:
> #$
> > Je me suis fait une appli avec une interface (en fait position des
> controls
> > dans une form comme des textbox, des picture box,...). Comment faire
pour
> > que l'interface soit modifiée proportionnellement à la résolution de
> l'écran
> > ?
> >
> >
> > Aujourd'hui pour une appli développée en 1024x 728 (c'est dans cette
> > résolution que je place les controls), des controls sont tronqués en
> 800x600
> > et l'appli n'apparait que dans un partie de l'écran pour une


résolution
>
> > 1024x768.
> >
> > De plus, l'application ne prends pas tous l'écran sur un ordinateur
> portable
> > même en 1024x728 ???. Je ne comprends pas !
> >
> >
> > Merci de m'aider...
> >
> >
>
>




Avatar
Christophe
Bonjour,


Type Rect
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

"dummy& = GetClientRect&(Me.hwnd, myrect)




API qui te permet de recuperer dans la structure myrect, la zone client de
la fenetre cad la zone "utile" (sans barre de titre etc...).

Pctloupe.Width = Pctscreen.ScaleX(myrect.Right, 3, 1) - Pctscreen.Width"



La largeur de mon controle pictureBox nommé PctLoupe est égale à la largeur
client de ma fenetre MDI moins la largeur d'un pictureBox appelé pctscreen.

Le scaleX est là pour convertir les unités : passe de pixel à twips

Car comme indiqué dans la MSDN un controle pictureBox a ses dimensions
toujours exprimées en twips

Christophe Vergon






"Gandalf" a écrit dans le message de news:

Merci pour Adam, Christophe et Patrice.

je vois que la méthode de Patrice et Adam sont similaires. Je pensais que


VB
pouvait gérer la différence de résolution mais à priori il n'y a pas
beaucoup de choix que de redimensionner proportionnellement chaque control
(ainsi que leur positionnement).

Par contre, je n'ai pas très bien compris la méthode de Christophe.
En particulier les instructions suivantes :
"dummy& = GetClientRect&(Me.hwnd, myrect)
Pctloupe.Width = Pctscreen.ScaleX(myrect.Right, 3, 1) - Pctscreen.Width"


"Gandalf" a écrit dans le message de news:
eWr#
> En effet, j'utilise déjà screen.height et .width, et cela me permet
> d'agrandir la fenêtre de l'application en fonction de la résolution de
> l'écran.
> Le problème, c'est que les controls ne suivent pas proportionnellement
> lorsqu'on étire la fenêtre et on se retrouve avec une fenêtre plein


écran
> mais les controls sont rassemblés que sur une partie de l'écran (de plus
en
> plus petite lorsqu'on augmente la résolution de l'écran). Conclusion :


la
> position des controls qui donnait une interface agréable occupant tout
> l'écran en 1024x 768 n'est pas gardé lorsqu'on change de résolution.
>
> j'aimerai donc savoir comment faire suivre proportionnellement la


position
> des controls suivant la résolution de l'écran ?
>
>
>
> "Christophe" a écrit dans le message de news:
> blpejv$pn0$
> > Bonjour,
> >
> > Utilises l''objet Screen
> > Screen.height
> > Screen.width vont te donner la taille de l'écran.
> >
> > L'api getclientrect te permet d'obtenir la taille de la zone client
d'une
> > fenetre.
> >
> >
> > Christophe Vergon
> > "Gandalf" a écrit dans le message de news:
> > #$
> > > Je me suis fait une appli avec une interface (en fait position des
> > controls
> > > dans une form comme des textbox, des picture box,...). Comment faire
> pour
> > > que l'interface soit modifiée proportionnellement à la résolution de
> > l'écran
> > > ?
> > >
> > >
> > > Aujourd'hui pour une appli développée en 1024x 728 (c'est dans cette
> > > résolution que je place les controls), des controls sont tronqués en
> > 800x600
> > > et l'appli n'apparait que dans un partie de l'écran pour une
résolution
> >
> > > 1024x768.
> > >
> > > De plus, l'application ne prends pas tous l'écran sur un ordinateur
> > portable
> > > même en 1024x728 ???. Je ne comprends pas !
> > >
> > >
> > > Merci de m'aider...
> > >
> > >
> >
> >
>
>




Avatar
Gandalf
merci pour ces précisions.


"Christophe" a écrit dans le message de news:
bm0cpi$7ci$
Bonjour,


Type Rect
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type

> "dummy& = GetClientRect&(Me.hwnd, myrect)


API qui te permet de recuperer dans la structure myrect, la zone client de
la fenetre cad la zone "utile" (sans barre de titre etc...).

> Pctloupe.Width = Pctscreen.ScaleX(myrect.Right, 3, 1) - Pctscreen.Width"

La largeur de mon controle pictureBox nommé PctLoupe est égale à la


largeur
client de ma fenetre MDI moins la largeur d'un pictureBox appelé


pctscreen.

Le scaleX est là pour convertir les unités : passe de pixel à twips

Car comme indiqué dans la MSDN un controle pictureBox a ses dimensions
toujours exprimées en twips

Christophe Vergon






"Gandalf" a écrit dans le message de news:

> Merci pour Adam, Christophe et Patrice.
>
> je vois que la méthode de Patrice et Adam sont similaires. Je pensais


que
VB
> pouvait gérer la différence de résolution mais à priori il n'y a pas
> beaucoup de choix que de redimensionner proportionnellement chaque


control
> (ainsi que leur positionnement).
>
> Par contre, je n'ai pas très bien compris la méthode de Christophe.
> En particulier les instructions suivantes :
> "dummy& = GetClientRect&(Me.hwnd, myrect)
> Pctloupe.Width = Pctscreen.ScaleX(myrect.Right, 3, 1) - Pctscreen.Width"
>
>
> "Gandalf" a écrit dans le message de news:
> eWr#
> > En effet, j'utilise déjà screen.height et .width, et cela me permet
> > d'agrandir la fenêtre de l'application en fonction de la résolution de
> > l'écran.
> > Le problème, c'est que les controls ne suivent pas proportionnellement
> > lorsqu'on étire la fenêtre et on se retrouve avec une fenêtre plein
écran
> > mais les controls sont rassemblés que sur une partie de l'écran (de


plus
> en
> > plus petite lorsqu'on augmente la résolution de l'écran). Conclusion :
la
> > position des controls qui donnait une interface agréable occupant tout
> > l'écran en 1024x 768 n'est pas gardé lorsqu'on change de résolution.
> >
> > j'aimerai donc savoir comment faire suivre proportionnellement la
position
> > des controls suivant la résolution de l'écran ?
> >
> >
> >
> > "Christophe" a écrit dans le message de news:
> > blpejv$pn0$
> > > Bonjour,
> > >
> > > Utilises l''objet Screen
> > > Screen.height
> > > Screen.width vont te donner la taille de l'écran.
> > >
> > > L'api getclientrect te permet d'obtenir la taille de la zone client
> d'une
> > > fenetre.
> > >
> > >
> > > Christophe Vergon
> > > "Gandalf" a écrit dans le message de news:
> > > #$
> > > > Je me suis fait une appli avec une interface (en fait position des
> > > controls
> > > > dans une form comme des textbox, des picture box,...). Comment


faire
> > pour
> > > > que l'interface soit modifiée proportionnellement à la résolution


de
> > > l'écran
> > > > ?
> > > >
> > > >
> > > > Aujourd'hui pour une appli développée en 1024x 728 (c'est dans


cette
> > > > résolution que je place les controls), des controls sont tronqués


en
> > > 800x600
> > > > et l'appli n'apparait que dans un partie de l'écran pour une
> résolution
> > >
> > > > 1024x768.
> > > >
> > > > De plus, l'application ne prends pas tous l'écran sur un


ordinateur
> > > portable
> > > > même en 1024x728 ???. Je ne comprends pas !
> > > >
> > > >
> > > > Merci de m'aider...
> > > >
> > > >
> > >
> > >
> >
> >
>
>