OVH Cloud OVH Cloud

Problème de taille écran...

7 réponses
Avatar
X
Bonsoir,

Je n'arrive pas à centrer une forme sur l'écran (1024) en largeur, je
fais:

Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As
Long) As Long
Const sm_cxscreen = 0 ' je ne sais pas pourquoi je mets "0", j'avais ça en
exemple!!!
'
Sub Form_Load()
Form1.ScaleMode = vbPixels
'
Sub image_click
Form1.Left = (GetSystemMetrics(sm_cxscreen) / 2) - (Form1.Width / 2)
-----

Et ça ne marche pas, déjà j'ai mon écran qui dit "1024", normal (avec
Getsystem...), mais la forme elle, elle est toute petite et pourtant elle
est déjà donné comme plus grande que l'écran....
Manifestement les mesures ne sont pas les mêmes, l'écran est en pixel et
sans doute la forme en twips (pourtant je l'ai mis en pixels dans les
propriétés manuelles), le vbPixels semble peu opérant, ce n'est pas la
première fois...

Préalablement, pourrait-on me dire à quoi sert "GetSystemMetric", car
ils sont gentils, mais c'est en anglais ???

Quelqu'un aurait-il une idée pour forcer le calcul dans le même mode ???

Merci.
--
ECRIRE
http://irolog.free.fr/ecrire/index.htm

LOGICIELS
http://irolog.free.fr

SITE
http://irolog.free.fr/joe/index.htm

FAQ VB
http://faq.vb.free.fr

PRINCIPE D'UTILISATION DES NEWSGROUPS MICROSOFT
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
********************************************************

7 réponses

Avatar
X a écrit :

Bonsoir,

Je n'arrive pas à centrer une forme sur l'écran (1024) en largeur, je
fais:

Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As
Long) As Long
Const sm_cxscreen = 0 ' je ne sais pas pourquoi je mets "0", j'avais ça en
exemple!!!
'
Sub Form_Load()
Form1.ScaleMode = vbPixels
'
Sub image_click
Form1.Left = (GetSystemMetrics(sm_cxscreen) / 2) - (Form1.Width / 2)
-----

Et ça ne marche pas, déjà j'ai mon écran qui dit "1024", normal (avec
Getsystem...), mais la forme elle, elle est toute petite et pourtant elle
est déjà donné comme plus grande que l'écran....
Manifestement les mesures ne sont pas les mêmes, l'écran est en pixel et
sans doute la forme en twips (pourtant je l'ai mis en pixels dans les
propriétés manuelles), le vbPixels semble peu opérant, ce n'est pas la
première fois...

Préalablement, pourrait-on me dire à quoi sert "GetSystemMetric", car
ils sont gentils, mais c'est en anglais ???

Quelqu'un aurait-il une idée pour forcer le calcul dans le même mode ???

Merci.
--
ECRIRE
http://irolog.free.fr/ecrire/index.htm

LOGICIELS
http://irolog.free.fr

SITE
http://irolog.free.fr/joe/index.htm

FAQ VB
http://faq.vb.free.fr

PRINCIPE D'UTILISATION DES NEWSGROUPS MICROSOFT
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
********************************************************







Bonjour Monsieur X

SM_CXSCREEN te renvoi la valeur de la largeur (X) de ton écran , comme
toute API qui se respecte elle renvoi des unités de périphérique, ou des
unités logiques, ici vu ce que tu demande à
GetsystemMetrics c'est des unités de périphérique, donc des pixels.
Si on fait référence à la MSDN pour la propriété width on apprend que
pour form , screen et printer les mesures sont toujours en twips.

Comment faire la convertion ?

En utilisant l'objet screen et ses propriétés TwipsperpixelX,
TwipsperpixelY.

Et comment faire l'économie d'un code que l'on ne comprend pas :
Screen.height, et Screen.width donne de suite la hauteur et la largeur
de l'écran.

A+

Christophe
Avatar
Christian Hugoud
Tu peux aussi utiliser l'objet Screen.

Christian

"<pas-despam> @Bwanadoo.fr>" <"<pas-despam> a écrit dans le message de news:
43305a9f$0$17241$
X a écrit :

Bonsoir,

Je n'arrive pas à centrer une forme sur l'écran (1024) en largeur, je
fais:

Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As
Long) As Long
Const sm_cxscreen = 0 ' je ne sais pas pourquoi je mets "0", j'avais ça
en exemple!!!
'
Sub Form_Load()
Form1.ScaleMode = vbPixels
'
Sub image_click
Form1.Left = (GetSystemMetrics(sm_cxscreen) / 2) - (Form1.Width / 2)
-----

Et ça ne marche pas, déjà j'ai mon écran qui dit "1024", normal (avec
Getsystem...), mais la forme elle, elle est toute petite et pourtant elle
est déjà donné comme plus grande que l'écran....
Manifestement les mesures ne sont pas les mêmes, l'écran est en pixel et
sans doute la forme en twips (pourtant je l'ai mis en pixels dans les
propriétés manuelles), le vbPixels semble peu opérant, ce n'est pas la
première fois...

Préalablement, pourrait-on me dire à quoi sert "GetSystemMetric", car
ils sont gentils, mais c'est en anglais ???

Quelqu'un aurait-il une idée pour forcer le calcul dans le même mode
???

Merci.
--
ECRIRE
http://irolog.free.fr/ecrire/index.htm

LOGICIELS
http://irolog.free.fr

SITE
http://irolog.free.fr/joe/index.htm

FAQ VB
http://faq.vb.free.fr

PRINCIPE D'UTILISATION DES NEWSGROUPS MICROSOFT
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
********************************************************






Bonjour Monsieur X

SM_CXSCREEN te renvoi la valeur de la largeur (X) de ton écran , comme
toute API qui se respecte elle renvoi des unités de périphérique, ou des
unités logiques, ici vu ce que tu demande à
GetsystemMetrics c'est des unités de périphérique, donc des pixels.
Si on fait référence à la MSDN pour la propriété width on apprend que pour
form , screen et printer les mesures sont toujours en twips.

Comment faire la convertion ?

En utilisant l'objet screen et ses propriétés TwipsperpixelX,
TwipsperpixelY.

Et comment faire l'économie d'un code que l'on ne comprend pas :
Screen.height, et Screen.width donne de suite la hauteur et la largeur de
l'écran.

A+

Christophe














Avatar
driss hanib
Allez "X" commentb faire simple quand on peut faire compliqué..

Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2 '
cela suffit amplement

Enfin " la culture c'est comme la confiture.."




"X" <.> a écrit dans le message de news:
%23d$
Bonsoir,

Je n'arrive pas à centrer une forme sur l'écran (1024) en largeur, je
fais:

Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As
Long) As Long
Const sm_cxscreen = 0 ' je ne sais pas pourquoi je mets "0", j'avais ça
en
exemple!!!
'
Sub Form_Load()
Form1.ScaleMode = vbPixels
'
Sub image_click
Form1.Left = (GetSystemMetrics(sm_cxscreen) / 2) - (Form1.Width / 2)
-----

Et ça ne marche pas, déjà j'ai mon écran qui dit "1024", normal (avec
Getsystem...), mais la forme elle, elle est toute petite et pourtant elle
est déjà donné comme plus grande que l'écran....
Manifestement les mesures ne sont pas les mêmes, l'écran est en pixel et
sans doute la forme en twips (pourtant je l'ai mis en pixels dans les
propriétés manuelles), le vbPixels semble peu opérant, ce n'est pas la
première fois...

Préalablement, pourrait-on me dire à quoi sert "GetSystemMetric", car
ils sont gentils, mais c'est en anglais ???

Quelqu'un aurait-il une idée pour forcer le calcul dans le même mode
???

Merci.
--
ECRIRE
http://irolog.free.fr/ecrire/index.htm

LOGICIELS
http://irolog.free.fr

SITE
http://irolog.free.fr/joe/index.htm

FAQ VB
http://faq.vb.free.fr

PRINCIPE D'UTILISATION DES NEWSGROUPS MICROSOFT
http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
********************************************************







Avatar
X
Bonjour,

Merci :o)

Un code que l'on ne comprend pas, lol, oui, notamment les zAPIs, si on
veut se pencher un peu dessus, c'est de l'anglais...
-------------

"<pas-despam> @Bwanadoo.fr>" <"<pas-despam> a écrit dans le message de news:
43305a9f$0$17241$
|X a écrit :
|
| > Bonsoir,
| >
| > Je n'arrive pas à centrer une forme sur l'écran (1024) en largeur, je
| >fais:
| >
| > Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As
| >Long) As Long
| > Const sm_cxscreen = 0 ' je ne sais pas pourquoi je mets "0", j'avais ça
en
| >exemple!!!
| > '
| >Sub Form_Load()
| > Form1.ScaleMode = vbPixels
| > '
| >Sub image_click
| > Form1.Left = (GetSystemMetrics(sm_cxscreen) / 2) - (Form1.Width / 2)
| >-----
| >
| > Et ça ne marche pas, déjà j'ai mon écran qui dit "1024", normal (avec
| >Getsystem...), mais la forme elle, elle est toute petite et pourtant elle
| >est déjà donné comme plus grande que l'écran....
| >Manifestement les mesures ne sont pas les mêmes, l'écran est en pixel et
| >sans doute la forme en twips (pourtant je l'ai mis en pixels dans les
| >propriétés manuelles), le vbPixels semble peu opérant, ce n'est pas la
| >première fois...
| >
| > Préalablement, pourrait-on me dire à quoi sert "GetSystemMetric", car
| >ils sont gentils, mais c'est en anglais ???
| >
| > Quelqu'un aurait-il une idée pour forcer le calcul dans le même mode
???
| >
| >Merci.
| >--
| >ECRIRE
| >http://irolog.free.fr/ecrire/index.htm
| >
| >LOGICIELS
| >http://irolog.free.fr
| >
| >SITE
| >http://irolog.free.fr/joe/index.htm
| >
| >FAQ VB
| >http://faq.vb.free.fr
| >
| >PRINCIPE D'UTILISATION DES NEWSGROUPS MICROSOFT
| >http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
| >********************************************************
| >
| >
| >
| >
|
| Bonjour Monsieur X
|
| SM_CXSCREEN te renvoi la valeur de la largeur (X) de ton écran , comme
| toute API qui se respecte elle renvoi des unités de périphérique, ou des
| unités logiques, ici vu ce que tu demande à
| GetsystemMetrics c'est des unités de périphérique, donc des pixels.
| Si on fait référence à la MSDN pour la propriété width on apprend que
| pour form , screen et printer les mesures sont toujours en twips.
|
| Comment faire la convertion ?
|
| En utilisant l'objet screen et ses propriétés TwipsperpixelX,
| TwipsperpixelY.
|
| Et comment faire l'économie d'un code que l'on ne comprend pas :
| Screen.height, et Screen.width donne de suite la hauteur et la largeur
| de l'écran.
|
| A+
|
| Christophe
|
|
|
|
|
|
|
|
|
|
|
|
Avatar
X
Merci, c'est en effet ce que je vais faire :o)



"Christian Hugoud" a écrit dans le message de news:
%
| Tu peux aussi utiliser l'objet Screen.
|
| Christian
|
| "<pas-despam> @Bwanadoo.fr>" <"<pas-despam> a écrit dans le message de
news:
| 43305a9f$0$17241$
| >X a écrit :
| >
| >> Bonsoir,
| >>
| >> Je n'arrive pas à centrer une forme sur l'écran (1024) en largeur,
je
| >> fais:
| >>
| >> Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex
As
| >> Long) As Long
| >> Const sm_cxscreen = 0 ' je ne sais pas pourquoi je mets "0", j'avais
ça
| >> en exemple!!!
| >> '
| >>Sub Form_Load()
| >> Form1.ScaleMode = vbPixels
| >> '
| >>Sub image_click
| >> Form1.Left = (GetSystemMetrics(sm_cxscreen) / 2) - (Form1.Width / 2)
| >>-----
| >>
| >> Et ça ne marche pas, déjà j'ai mon écran qui dit "1024", normal
(avec
| >> Getsystem...), mais la forme elle, elle est toute petite et pourtant
elle
| >> est déjà donné comme plus grande que l'écran....
| >>Manifestement les mesures ne sont pas les mêmes, l'écran est en pixel et
| >>sans doute la forme en twips (pourtant je l'ai mis en pixels dans les
| >>propriétés manuelles), le vbPixels semble peu opérant, ce n'est pas la
| >>première fois...
| >>
| >> Préalablement, pourrait-on me dire à quoi sert "GetSystemMetric",
car
| >> ils sont gentils, mais c'est en anglais ???
| >>
| >> Quelqu'un aurait-il une idée pour forcer le calcul dans le même mode
| >> ???
| >>
| >>Merci.
| >>--
| >>ECRIRE
| >>http://irolog.free.fr/ecrire/index.htm
| >>
| >>LOGICIELS
| >>http://irolog.free.fr
| >>
| >>SITE
| >>http://irolog.free.fr/joe/index.htm
| >>
| >>FAQ VB
| >>http://faq.vb.free.fr
| >>
| >>PRINCIPE D'UTILISATION DES NEWSGROUPS MICROSOFT
| >>http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
| >>********************************************************
| >>
| >>
| >>
| >
| > Bonjour Monsieur X
| >
| > SM_CXSCREEN te renvoi la valeur de la largeur (X) de ton écran , comme
| > toute API qui se respecte elle renvoi des unités de périphérique, ou des
| > unités logiques, ici vu ce que tu demande à
| > GetsystemMetrics c'est des unités de périphérique, donc des pixels.
| > Si on fait référence à la MSDN pour la propriété width on apprend que
pour
| > form , screen et printer les mesures sont toujours en twips.
| >
| > Comment faire la convertion ?
| >
| > En utilisant l'objet screen et ses propriétés TwipsperpixelX,
| > TwipsperpixelY.
| >
| > Et comment faire l'économie d'un code que l'on ne comprend pas :
| > Screen.height, et Screen.width donne de suite la hauteur et la largeur
de
| > l'écran.
| >
| > A+
| >
| > Christophe
| >
| >
| >
| >
| >
| >
| >
| >
| >
| >
| >
| >
|
|
Avatar
X
Bonjour,

lol, c'est même trop long je n'avais besoin que de la largeur, encore
merci ;o)



"driss hanib" a écrit dans le message de news:

| Allez "X" commentb faire simple quand on peut faire compliqué..
|
| Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2 '
| cela suffit amplement
|
| Enfin " la culture c'est comme la confiture.."
|
|
|
|
| "X" <.> a écrit dans le message de news:
| %23d$
| > Bonsoir,
| >
| > Je n'arrive pas à centrer une forme sur l'écran (1024) en largeur, je
| > fais:
| >
| > Private Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As
| > Long) As Long
| > Const sm_cxscreen = 0 ' je ne sais pas pourquoi je mets "0", j'avais ça
| > en
| > exemple!!!
| > '
| > Sub Form_Load()
| > Form1.ScaleMode = vbPixels
| > '
| > Sub image_click
| > Form1.Left = (GetSystemMetrics(sm_cxscreen) / 2) - (Form1.Width / 2)
| > -----
| >
| > Et ça ne marche pas, déjà j'ai mon écran qui dit "1024", normal (avec
| > Getsystem...), mais la forme elle, elle est toute petite et pourtant
elle
| > est déjà donné comme plus grande que l'écran....
| > Manifestement les mesures ne sont pas les mêmes, l'écran est en pixel et
| > sans doute la forme en twips (pourtant je l'ai mis en pixels dans les
| > propriétés manuelles), le vbPixels semble peu opérant, ce n'est pas la
| > première fois...
| >
| > Préalablement, pourrait-on me dire à quoi sert "GetSystemMetric", car
| > ils sont gentils, mais c'est en anglais ???
| >
| > Quelqu'un aurait-il une idée pour forcer le calcul dans le même mode
| > ???
| >
| > Merci.
| > --
| > ECRIRE
| > http://irolog.free.fr/ecrire/index.htm
| >
| > LOGICIELS
| > http://irolog.free.fr
| >
| > SITE
| > http://irolog.free.fr/joe/index.htm
| >
| > FAQ VB
| > http://faq.vb.free.fr
| >
| > PRINCIPE D'UTILISATION DES NEWSGROUPS MICROSOFT
| > http://support.microsoft.com/directory/worldwide/fr/newsgroup/regles.htm
| > ********************************************************
| >
| >
| >
| >
| >
|
|
Avatar
Gloops
Salut,

driss hanib a écrit, le 21/09/2005 08:49 :

Allez "X" commentb faire simple quand on peut faire compliqué..

Me.Move (Screen.Width - Me.Width) / 2, (Screen.Height - Me.Height) / 2 '
cela suffit amplement



Intéressant, j'avais oublié comment connaître les dimensions de l'écran
(si si, vrai j'vous jure ...), alors mon premier réflexe a été d'aller
chercher dans les API. Ensuite, comme l'unité ne correspondait pas à ce
que j'avais dans les dimensions du formulaire, j'ai fait la conversion
... dans l'ordre inverse.

HautEcr = GetSystemMetrics(SM_CYSCREEN) * Screen.TwipsPerPixelY


Enfin " la culture c'est comme la confiture.."



Si on n'a pas d'ouvre-boîte pour ouvrir la boîte de confiture, et qu'on
a un perforateur laser avec paramétrage électronique (pendant qu'on y
est ;) ) sous la main, on peut toujours essayer avec :)

Bon d'accord, c'est "ballot".

C'est bien vrai que Screen pour l'écran, y a pas plus simple ...