Page 1 sur 1

[R] Obtenir la position d'un contrôle

Posté : dim. 23 oct. 2011 19:53
par papami
Bonjour

avec GuiGetCursorInfo on obtient bien l'id du contrôle survolé et la position du curseur de souris, mais je ne trouve pas de fonction permettant d'obtenir la position d'un contrôle (et ses dimensions), comme sait le faire Au3Info.exe ...

(et sans avoir à recalculer par rapport à la position mouvante de la GUI et aux positions/dimensions de création.)

possible ou non ?

Merci

Re: [..] obtenir la position d'un contrôle

Posté : dim. 23 oct. 2011 20:01
par Ahbadiane
Voir la fonction ControlGetPos()

Re: [..] obtenir la position d'un contrôle

Posté : dim. 23 oct. 2011 20:05
par zeshrek
Hum... voyons voir... un peu de d'anglais me semble de rigueur...
Contrôle se dit control en anglais
Obtenir se dit get
Position se dit position
Et si tu cherchais ControlGetPos dans l'aide ?
Pour ce qui est de sa taille... il me semble que c'est toi qui l'a fixée non ? donc a la limite colle la dans une variable si tu dois la reutiliser plus tard...


Edit : grillé, ca m'apprendra a vouloir faire des phrases...

Re: [..] obtenir la position d'un contrôle

Posté : dim. 23 oct. 2011 20:53
par mikell
Oui mais qu'elles sont belles ces phrases ... Image

Et quelle émotion quand on les découvre ces fonctions control, bien cachées qu'elles sont sous 'windows management' Image

Re: [R] obtenir la position d'un contrôle

Posté : dim. 23 oct. 2011 21:16
par papami
ah ben oui, je suis zému :oops: !

bon, merci pour la leçon d'anglais.

mais étant donné mon niveau en Autoit, étant axé création GUI, c'est là que j'ai cherché un GuiCtrlGetPos ... hypothétique, sans élargir mon champ de vision !

donc merci à tous et en particulier à Ahbadiane pour sa sobriété efficace :wink:

à+

Re: [..] Obtenir la position d'un contrôle

Posté : sam. 19 nov. 2011 11:42
par papami
Bonjour

je reviens à la charge :

-j'essaie l'exemple donné dans l'aide pour ControlGetPos ... en modifiant le nom du control qui est Edit chez moi et non Edit1 : Erreur car ne renvoie pas d'array.
-je corrige le titre en "Sans titre - Bloc-notes" qui est le titre de la fenêtre bloc-note chez moi : erreur, pas de retour d'array.
-j'essaie un ControlSetText ... ne fonctionne pas non plus

mon problème :
au départ on connaît évidemment(!) les dimensions d'un control (label, edit...)
mais avec $WS_SIZEBOX une fois la fenêtre redimensionnée comment trouver les nouvelles dimensions ?

si quelqu'un a un exemple fonctionnel de ControlGetPos je suis preneur

Merci

Re: [..] Obtenir la position d'un contrôle

Posté : sam. 19 nov. 2011 17:55
par mikell
papami a écrit :au départ on connaît évidemment(!) les dimensions d'un control (label, edit...)
J'en conclus donc que c'est un controle que tu as placé toi-même dans une gui, alors dans ce cas

Code : Tout sélectionner

ControlGetPos ( $magui, "", $moncontrole)
devrait suffire

Pour le redimensionnement, si la position du controle change alors tu es évidemment obligé de la récupérer de nouveau par un ControlGetPos (ou par un WinGetPos si tu as défini une position fixe du controle par rapport à un des bords de la gui avec un $GUI_DOCKtruc)
Tu peux surveiller ça avec un $GUI_EVENT_RESIZED dans la boucle While principale

Re: [..] Obtenir la position d'un contrôle

Posté : sam. 19 nov. 2011 18:25
par papami
oui c'est ce que je fais, mais mon erreur venait de la présentation de la macro qui indique ControlGetPos ( "title", "text", controlID ) ... et avec un "titre" de fenêtre je n'arrivais à rien !

avec ton aide et ton exemple c'est bon ! (avec l'id de la GUI donc et non le titre de la fenêtre)

donc merci beaucoup :D