OVH Cloud OVH Cloud

X-Y d'un formulaire

7 réponses
Avatar
luc
Bonjour,

Comment faire pour conna=EEtre les coordonn=E9es X et Y du=20
coin sup=E9rieur gauche d'un formulaire?

Dans mon applic, lorsque j'affiche un 2d formulaire, je=20
d=E9place le 1er par un "docmd.movesize 0, 0" de mani=E8re =E0=20
ce que son contenu reste bien visible pendant le=20
traitement du 2d (ouvert avec "acdialog"). Ensuite,=20
lorsque l'on quitte le 2d, je souhaite ramener le 1er =E0 sa=20
position initiale.

Merci d'avance pour votre aide.
Luc

7 réponses

Avatar
3stone
Salut,

"luc"
Comment faire pour connaître les coordonnées X et Y du
coin supérieur gauche d'un formulaire?

Dans mon applic, lorsque j'affiche un 2d formulaire, je
déplace le 1er par un "docmd.movesize 0, 0" de manière à
ce que son contenu reste bien visible pendant le
traitement du 2d (ouvert avec "acdialog"). Ensuite,
lorsque l'on quitte le 2d, je souhaite ramener le 1er à sa
position initiale.


Simplement par :

MoveSize x, y, lageur, hauteur

ou, plus généralement, regarde ceci :
http://mypage.bluewin.ch/w.stucki/Formulaires.htm#Positionnement
http://mypage.bluewin.ch/w.stucki/Formulaires.htm#Positionner



--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Avatar
luc
Bonjour Pierre (ou plutôt ... bonsoir!),

J'ai été voir ce que tu m'as renseigné, et j'ai téléchargé
et lu le Win32.hlp que j'ai trouvé sur "www.vbasic.org".
Je crois avoir un problème avec les unités.
J'ai défini un formulaire avec un bouton.
Au "load", à l'aide de la fonction "getwindowrect" je note
les coordonnées (gauche, droit, sup et inf) de la fenêtre
et les sauve dans des mémoires de travail.
Au "click" du bouton je déplace la fenêtre au coin
supérieur gauche par "docmd movesize 0,0".
Lorsque je re-clicke sur le bouton, je fais
un "docmd.movesize gauche_origine, sup_origine", mais il
ne me remet pas le formulaire au bon endroit.
Merci de ton aide.
Luc
-----Message d'origine-----
Salut,

"luc"
Comment faire pour connaître les coordonnées X et Y du
coin supérieur gauche d'un formulaire?

Dans mon applic, lorsque j'affiche un 2d formulaire, je
déplace le 1er par un "docmd.movesize 0, 0" de manière à
ce que son contenu reste bien visible pendant le
traitement du 2d (ouvert avec "acdialog"). Ensuite,
lorsque l'on quitte le 2d, je souhaite ramener le 1er à sa
position initiale.


Simplement par :

MoveSize x, y, lageur, hauteur

ou, plus généralement, regarde ceci :
http://mypage.bluewin.ch/w.stucki/Formulaires.htm#Position
nement

http://mypage.bluewin.ch/w.stucki/Formulaires.htm#Position
ner




--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------






.



Avatar
3stone
Salut,

"luc"
Au "click" du bouton je déplace la fenêtre au coin
supérieur gauche par "docmd movesize 0,0".
Lorsque je re-clicke sur le bouton, je fais
un "docmd.movesize gauche_origine, sup_origine", mais il
ne me remet pas le formulaire au bon endroit.


Il faut vérifier l'unité utilisée ou recue par le système...

En géneral, Access "parle" en twips...

1 pouce a 1440 twips
1 cm en a 567 twips

Certaines API utilise les pixels...

Et, pour augmenter la difficulté, Windows ne "connait"
pas les DPI de l'écran qu'il utilise !
Ce qui se vérifie simplement en "affichant" n'importe quel
document à l'échelle 100%

Le plus simple en Access, semble donc de "parler" twips
et de multiplier par un coéficient obtenu par tâtonnement...


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Avatar
3stone
Salut,

Ta deuxième question ?
Lorsque je re-clicke sur le bouton, je fais
un "docmd.movesize gauche_origine, sup_origine", mais il
ne me remet pas le formulaire au bon endroit.


MoveSize utilise des Twips comme unité.

DoCmd.MoveSize 1 * 567, 2 * 567

place le formulaire à 1cm du bord gauche et à 2cm du cadre haut

Le problème est, comment et en quelle unité récupère et mémorise-tu
les coordonnées de ton formulaire...


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------

Avatar
luc
Salut Pierre,
Désolé, ce n'est que fort tard que j'ai compris que "le
1er fil" signifiait le 1er message !!! :-( j'suis pas
toujours subtil ...
Quant à répondre à ta question : "comment et en quelle
unité je récupère et mémorise les coordonnées de mon
formulaire" : comment puis-je le savoir?
Dans les propriétés du form, le "width" est exprimé en
centimètres.
J'avoue que je ne m'y retrouve pas dans ce problème
d'unités !!!???
Il me sembait que l'on pouvait définir globalement les
unités utilisées, mais je ne retrouve plus l'endroit où
l'on peut le faire, et de plus, je ne sais pas dans quelle
unité on a intérêt de travailler !!!
Bref, j'ai besoin d'aide et t'en remercie encore par
avance.
Luc
-----Message d'origine-----
Salut,

Ta deuxième question ?
Lorsque je re-clicke sur le bouton, je fais
un "docmd.movesize gauche_origine, sup_origine", mais il
ne me remet pas le formulaire au bon endroit.


MoveSize utilise des Twips comme unité.

DoCmd.MoveSize 1 * 567, 2 * 567

place le formulaire à 1cm du bord gauche et à 2cm du
cadre haut


Le problème est, comment et en quelle unité récupère et
mémorise-tu

les coordonnées de ton formulaire...


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------





.




Avatar
3stone
Bon...soir ;-)

"luc"
Désolé, ce n'est que fort tard que j'ai compris que "le
1er fil" signifiait le 1er message !!! :-( j'suis pas
toujours subtil ...

Une conversation est un fil....
Tant que l'on parle du même problème, on reste dans la même
conversation, et donc, le même fil.
L'utilité d'un forum, est de permettre à chacun de suivre
les conversations qu'il désire ;-)


Quant à répondre à ta question : "comment et en quelle
unité je récupère et mémorise les coordonnées de mon
formulaire" : comment puis-je le savoir?

Ben, le "cm" Access est indiqué par les règles... donc simple.
Les pixels de l'écran... c'est toi qui sais le mieux...
Pour Access, comme déjà dit, c'est surtout les Twips.

Je suis absent les 3 prochaines journées, retour après 20 heures...
Si tu veux, tu m'envoies ton formulaire à problèmes et je jette un oeil!


--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------
Avatar
luc
Salut Pierre,

En utilisant la fonction "GetWindowRect" et la
méthode "MoveSize" de "DoCmd", il y a manifestement des
problèmes d'unités car le repositionnement ne se fait pas
bien du tout. Par contre, en utilisant la
fonction "MoveWindow" qui fait partie de la même DLL
que "GetWindowRect" ce problème disparaît ... avec
toutefois, une petite nuance, car, lorsque je ferme le 2d
form et que je veux ramener le 1er à son emplacement
d'origine, il se repositionne un petit peu plus bas qu'à
l'origine. Et si je cycle sur l'ouverture et la fermeture
du 2d form, à chaque fois, le 1er revient un peu plus bas
que précédemment jusqu'à se retrouver tout en bas de la
fenêtre. Je dois encore résoudre cela.
Mais, pour bien gérer le positionnement des fenêtres,
l'idéal serait de pouvoir appréhender et stocker les
coordonnées (largeur-hauteur) de la fenêtre Access ...
comment faire?
Merci d'avance.
Luc

PS : je ne suis pas un "viel" habitué du forum (mis à part
mon âge! hum!) ... quand tu me dis de te faire parvenir
mon formulaire à problème, comment dois-je procéder
puisque je ne peux pas mettre d'attachment dans les
messages?
Etant assez têtu, je tâcherai de résoudre le problème
avant de t'embêter ... en posant quand même l'une ou
l'autre question :-) :-)
Salut

-----Message d'origine-----
Bon...soir ;-)

"luc"
Désolé, ce n'est que fort tard que j'ai compris que "le
1er fil" signifiait le 1er message !!! :-( j'suis pas
toujours subtil ...

Une conversation est un fil....
Tant que l'on parle du même problème, on reste dans
la même

conversation, et donc, le même fil.
L'utilité d'un forum, est de permettre à chacun de
suivre

les conversations qu'il désire ;-)


Quant à répondre à ta question : "comment et en quelle
unité je récupère et mémorise les coordonnées de mon
formulaire" : comment puis-je le savoir?

Ben, le "cm" Access est indiqué par les règles...
donc simple.

Les pixels de l'écran... c'est toi qui sais le
mieux...

Pour Access, comme déjà dit, c'est surtout les Twips.

Je suis absent les 3 prochaines journées, retour
après 20 heures...

Si tu veux, tu m'envoies ton formulaire à problèmes
et je jette un oeil!



--
A+
Pierre (3stone) Access MVP
--------------------------------------
Une pour tous, tous pour une ;-)
http://users.skynet.be/mpfa/charte.htm
--------------------------------------




.