[R] Déplacer des objets dans une fenêtre
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
-
tatane
- Niveau 4

- Messages : 63
- Enregistré le : mar. 30 juin 2009 20:47
- Localisation : Angoulême
- Status : Hors ligne
[R] Déplacer des objets dans une fenêtre
Bonjour à tous et merci pour votre aide quotidienne et votre participation à ce forum.
Voici mon "projet", très simple à expliquer mais je ne vois pas par où commencer pour le développer :
J'aimerais simplement pouvoir déplacer des icônes (objets) dans une fenêtre comme nous pouvons le faire sur le bureau de Windows/Linux/... Et si possible interagir avec ceux-ci.
Est-ce possible de réaliser cela avec autoit ?
Merci par avance pour vos réponses.
Voici mon "projet", très simple à expliquer mais je ne vois pas par où commencer pour le développer :
J'aimerais simplement pouvoir déplacer des icônes (objets) dans une fenêtre comme nous pouvons le faire sur le bureau de Windows/Linux/... Et si possible interagir avec ceux-ci.
Est-ce possible de réaliser cela avec autoit ?
Merci par avance pour vos réponses.
Modifié en dernier par tatane le sam. 14 nov. 2009 12:17, modifié 1 fois.
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] Déplacer des objets dans une fenêtre
Est-ce que vous aviez vu l'exemple dans l'aide de la fonction _GUIImageList_BeginDrag ? Ca semble un peu correspondre.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
-
tatane
- Niveau 4

- Messages : 63
- Enregistré le : mar. 30 juin 2009 20:47
- Localisation : Angoulême
- Status : Hors ligne
Re: [..] Déplacer des objets dans une fenêtre
Bonsoir,
Je ne connaissais pas cette fonction et en effet il se pourrait qu'elle corresponde à mes attentes.
L'exemple est un peu complexe, je l'étudierai demain à tête reposée.
Merci à vous.
P.S : Il est fort probable que j'aie encore besoin de votre aide quand je vois la longueur de l'exemple
...
EDIT : Je viens de compiler l'exemple de cette fonction et malheureusement il ne correspond pas vraiment à ce que je cherche. Enfin c'est assez difficile à dire mais ce que je recherche ce serait vraiment un système ou j'ai des icônes dans une fenêtre crée par autoit et où je peux les déplacer comme les icônes du bureau Windows. A la rigueur même si l'icône/image ne suit pas le curseur de la souris pendant le déplacement ce n'est pas très grave, mais sa position doit changer lors du "drop".
Je ne connaissais pas cette fonction et en effet il se pourrait qu'elle corresponde à mes attentes.
L'exemple est un peu complexe, je l'étudierai demain à tête reposée.
Merci à vous.
P.S : Il est fort probable que j'aie encore besoin de votre aide quand je vois la longueur de l'exemple
EDIT : Je viens de compiler l'exemple de cette fonction et malheureusement il ne correspond pas vraiment à ce que je cherche. Enfin c'est assez difficile à dire mais ce que je recherche ce serait vraiment un système ou j'ai des icônes dans une fenêtre crée par autoit et où je peux les déplacer comme les icônes du bureau Windows. A la rigueur même si l'icône/image ne suit pas le curseur de la souris pendant le déplacement ce n'est pas très grave, mais sa position doit changer lors du "drop".
Re: [..] Déplacer des objets dans une fenêtre
J'ai conçu ce petit script, il permet de glisser à volonter les 2 boutons sans perdre leurs fonctions case.
Ce n'est qu'une ébauche, si c'est ce que vous recherchez je pourrais généraliser cette fonction sur n'importe quel bouton et rajouter par exemple, un aperçu au cours du glissage du bouton et l'impossibilité de supperposer 2 boutons.
► Afficher le texteEbauche 1
-
tatane
- Niveau 4

- Messages : 63
- Enregistré le : mar. 30 juin 2009 20:47
- Localisation : Angoulême
- Status : Hors ligne
Re: [..] Déplacer des objets dans une fenêtre
Bonjour jumby,
C'est exactement ce que je recherche à l'exception des boutons (et encore), je travaillerai probablement avec des icones/images. Sinon c'est parfait surtout si :
Merci encore.
C'est exactement ce que je recherche à l'exception des boutons (et encore), je travaillerai probablement avec des icones/images. Sinon c'est parfait surtout si :
Alors là ce sera le rêverajouter par exemple, un aperçu au cours du glissage du bouton et l'impossibilité de supperposer 2 boutons.
Merci encore.
-
tolf
- Niveau 7

- Messages : 318
- Enregistré le : ven. 15 févr. 2008 12:25
- Localisation : Paris
- Status : Hors ligne
Re: [..] Déplacer des objets dans une fenêtre
Oh...Code : Tout sélectionner
For $aaaa = 1 To 999999999999999999 Step 1
Utilisez la boucle
Code : Tout sélectionner
While 1
...
Wend-
tatane
- Niveau 4

- Messages : 63
- Enregistré le : mar. 30 juin 2009 20:47
- Localisation : Angoulême
- Status : Hors ligne
Re: [..] Déplacer des objets dans une fenêtre
Bonsoir à tous.
Je dépoussière mon Post car je viens de triturer dans tous les sens le code que m'a fourni jumby. J'ai compris les grandes lignes bien que certains tests ou redondances me paraissent encore obscures.
Voici "ma version" allégée :
J'ai quelques soucis avec le déplacement du bouton. Il suit bien la souris lors d'un déplacement à vitesse lente mais il "décroche" si on accélère un peu plus. Sauriez-vous pourquoi ?
Je dépoussière mon Post car je viens de triturer dans tous les sens le code que m'a fourni jumby. J'ai compris les grandes lignes bien que certains tests ou redondances me paraissent encore obscures.
Voici "ma version" allégée :
► Afficher le texte
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] Déplacer des objets dans une fenêtre
J'ai remplacé le AutoItSetOption("MouseCoordMode", 0) par un 2, comme ça, il n'y a plus besoin du +28.
Code édité, j'avais fait une erreur !
► Afficher le texte
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
-
tatane
- Niveau 4

- Messages : 63
- Enregistré le : mar. 30 juin 2009 20:47
- Localisation : Angoulême
- Status : Hors ligne
Re: [..] Déplacer des objets dans une fenêtre
Merci beaucoup, ce code fonctionne parfaitement.
J'étudierai demain les modifications que vous avez apportées pour comprendre ce qui n'allait pas avec ma version.
Bonne nuit.
J'étudierai demain les modifications que vous avez apportées pour comprendre ce qui n'allait pas avec ma version.
Bonne nuit.
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] Déplacer des objets dans une fenêtre
En fait, pour résoudre le problème, il fallait juste changer le ExitLoop dans la boucle While par un If Not _IsPressed("01", $dll) Then ExitLoop.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
-
tatane
- Niveau 4

- Messages : 63
- Enregistré le : mar. 30 juin 2009 20:47
- Localisation : Angoulême
- Status : Hors ligne
Re: [..] Déplacer des objets dans une fenêtre
Bonjour,
Grâce à vous mon petit projet avance bien. Mais je me retrouve confronté à un petit problème avec la fonction _IsPressed.
En fait dans une GUI, j'ai 2 ListView et lorsque je clique sur un item de la première, cela "remplit" la seconde en fonction d'un fichier.
Jusqu'à présent, j'avais créé une fonction que j'avais placé dans la boucle infinie et qui testait la valeur de l'item sélectionné de la ListView1. Sauf que pour me permettre de gérer certains messages d'erreur, j'ai voulu ajouter dans cette fonction la fameuse fonction _IsPressed et voici mon problème :
il faut que je double-clic sur l'item de la ListView1 pour mettre à jour la ListView2 ou que je "glisse" l'item rien qu'un peu pour que _IsPressed s'active. Finalement ce n'est pas vraiment un _IsPressed qu'il me faudrait dans ce cas là mais plutôt un _IsClicked.
Y a-t-il un moyen pour résoudre se problème ?
Par avance, merci.
P.S : si par la même occasion vous pouvez m'expliquer comment utiliser la fonction ConsoleWrite(), j'en serai ravi. (impossible d'afficher le stdout dans la console ou un éditeur de texte)
Grâce à vous mon petit projet avance bien. Mais je me retrouve confronté à un petit problème avec la fonction _IsPressed.
En fait dans une GUI, j'ai 2 ListView et lorsque je clique sur un item de la première, cela "remplit" la seconde en fonction d'un fichier.
Jusqu'à présent, j'avais créé une fonction que j'avais placé dans la boucle infinie et qui testait la valeur de l'item sélectionné de la ListView1. Sauf que pour me permettre de gérer certains messages d'erreur, j'ai voulu ajouter dans cette fonction la fameuse fonction _IsPressed et voici mon problème :
il faut que je double-clic sur l'item de la ListView1 pour mettre à jour la ListView2 ou que je "glisse" l'item rien qu'un peu pour que _IsPressed s'active. Finalement ce n'est pas vraiment un _IsPressed qu'il me faudrait dans ce cas là mais plutôt un _IsClicked.
Y a-t-il un moyen pour résoudre se problème ?
Par avance, merci.
P.S : si par la même occasion vous pouvez m'expliquer comment utiliser la fonction ConsoleWrite(), j'en serai ravi. (impossible d'afficher le stdout dans la console ou un éditeur de texte)
Re: [..] Déplacer des objets dans une fenêtre
Pour consolewrite d'apres mes souvenir (tres trompeurs parfois) il faut compiler le script et consolewrite affiche le text que vous voulez
Bonne chance
Bonne chance
-
tatane
- Niveau 4

- Messages : 63
- Enregistré le : mar. 30 juin 2009 20:47
- Localisation : Angoulême
- Status : Hors ligne
Re: [..] Déplacer des objets dans une fenêtre
Je compile toujours mon script pourtant le consolewrite n'affiche rien du tout
.
Je tourne sous Seven 64, le problème viendrait-il de là ?
Et pour problème de _IsPressed, une idée ?
Je tourne sous Seven 64, le problème viendrait-il de là ?
Et pour problème de _IsPressed, une idée ?
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] Déplacer des objets dans une fenêtre
- Pour consolewrite(), j'utilise Scite4AutoIt, je lance le script avec F5 et consolewrite() écrit dans la zone en bas (F8 pour l'afficher).
Par contre, son on crée un exe du script en mode gui et qu'on le lance dans une console Dos, visiblement consolewrite n'affiche rien... C'est peut-être normal, je n'en sais rien.
Mais si on ajoute #AutoIt3Wrapper_Change2CUI=y (pour compiler en mode console et non gui) au début du script, ben là, quand je lance le script dans une fenêtre Dos, consolewrite écrit bien dans la console.
Au lieu d'ajouter manuellement #AutoIt3Wrapper_Change2CUI=y, on peut aussi (dans Scite) aller dans Tools->Compile->Create CUI...
- Si j'ai bien compris, vous voulez que le script détecte quand vous faites un clic dans la listview. Si c'est bien ça, voyez l'exemple de la fonction _GUICtrlListView_Create dans l'aide. Ce qui se trouve après "Case $NM_CLICK", à la ligne 333, est exécuté quand on fait un clic sur un élément de la listview.
Par contre, son on crée un exe du script en mode gui et qu'on le lance dans une console Dos, visiblement consolewrite n'affiche rien... C'est peut-être normal, je n'en sais rien.
Au lieu d'ajouter manuellement #AutoIt3Wrapper_Change2CUI=y, on peut aussi (dans Scite) aller dans Tools->Compile->Create CUI...
- Si j'ai bien compris, vous voulez que le script détecte quand vous faites un clic dans la listview. Si c'est bien ça, voyez l'exemple de la fonction _GUICtrlListView_Create dans l'aide. Ce qui se trouve après "Case $NM_CLICK", à la ligne 333, est exécuté quand on fait un clic sur un élément de la listview.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
- Tlem
- Site Admin

- Messages : 11798
- Enregistré le : ven. 20 juil. 2007 21:00
- Localisation : Bordeaux
- Status : Hors ligne
Re: [..] Déplacer des objets dans une fenêtre
G.U.I = Graphical User Interface
C.U.I = Console User Interface
C.U.I = Console User Interface
Thierry
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...
Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
-
tatane
- Niveau 4

- Messages : 63
- Enregistré le : mar. 30 juin 2009 20:47
- Localisation : Angoulême
- Status : Hors ligne
Re: [..] Déplacer des objets dans une fenêtre
Merci pour toutes ces infos !
En effet pour que consolewrite fonctionne, il suffit de compiler le script en CUI. Une invite de commande msdos s'ouvre alors lorsque consolewrite est appelée.
Bien vu orax ! Bien que je ne comprenne pas grand chose à l'exemple fourni avec _GUICtrlListView_Create(), j'en comprends suffisamment pour extraire ce dont j'ai besoin, le $NM_CLICK. Je vais être obligé de modifier un peu mon code pour l'adapter à la création des listview par _GUICtrlListView_Create() mais ça me paraît faisable (à mon niveau).
P.S. : si quelqu'un se sent capable de m'expliquer l'exemple fourni avec cette commande, en particulier la modification du WM_NOTIFY, je lui en serais reconnaissant
.
EDIT : Je viens de voir que l'un des $iExStyle fait référence au clic de la souris : $LVS_EX_ONECLICKACTIVATE - The control sends an $LVN_ITEMACTIVATE messages when the user clicks an item.
Est-il utilisable dans mon cas ? Si oui, comment ?
En effet pour que consolewrite fonctionne, il suffit de compiler le script en CUI. Une invite de commande msdos s'ouvre alors lorsque consolewrite est appelée.
Bien vu orax ! Bien que je ne comprenne pas grand chose à l'exemple fourni avec _GUICtrlListView_Create(), j'en comprends suffisamment pour extraire ce dont j'ai besoin, le $NM_CLICK. Je vais être obligé de modifier un peu mon code pour l'adapter à la création des listview par _GUICtrlListView_Create() mais ça me paraît faisable (à mon niveau).
P.S. : si quelqu'un se sent capable de m'expliquer l'exemple fourni avec cette commande, en particulier la modification du WM_NOTIFY, je lui en serais reconnaissant
EDIT : Je viens de voir que l'un des $iExStyle fait référence au clic de la souris : $LVS_EX_ONECLICKACTIVATE - The control sends an $LVN_ITEMACTIVATE messages when the user clicks an item.
Est-il utilisable dans mon cas ? Si oui, comment ?
- orax
- Modérateur

- Messages : 1479
- Enregistré le : lun. 23 mars 2009 04:50
- Localisation : ::1
- Status : Hors ligne
Re: [..] Déplacer des objets dans une fenêtre
Pour bien comprendre le WM_NOTIFY, il faut avoir quelques connaissances en l'API Win32, notamment concernant la gestion des évènements. Pour ma part, je ne pense pas être capable de pouvoir vous expliquer
, mais il y existe quelques tutoriels sur le sujet.
Sinon, d'une manière générale, la documentation se trouve sur MSDN. Par exemple, si on recherche NM_CLICK sur MSDN, on tombe sur http://msdn.microsoft.com/en-us/library ... S.85).aspx, et là on a toutes les infos pour nous permettre de l'utiliser, tel que le contenu de la structure NMITEMACTIVATE (voir $tagNMITEMACTIVATE dans AutoIt).
Pour $LVS_EX_ONECLICKACTIVATE, je ne sais pas si ça serait utilisable dans ce cas.
Pour $LVS_EX_ONECLICKACTIVATE, je ne sais pas si ça serait utilisable dans ce cas.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Re: [..] Déplacer des objets dans une fenêtre
Je suis pour ma part, parti dans une toute autre direction, mais je pense que ça peut fonctionner pour ce que vous voulez faire.
J'ai simplifié le code au maximum
En espérant que ça vous convienne
J'ai simplifié le code au maximum
En espérant que ça vous convienne
► Afficher le texte
-
tatane
- Niveau 4

- Messages : 63
- Enregistré le : mar. 30 juin 2009 20:47
- Localisation : Angoulême
- Status : Hors ligne
Re: [R] Déplacer des objets dans une fenêtre
Bonjour à tous,
Merci pour votre aide, je n'aurais pu réaliser mon programme sans vous.
Il est en phase de beta test si je puis dire ^^. Il ne devrait pas tarder à passer en version finale, je le posterai dès que ce sera le cas. En fait, j'ai voulu créer ce programme pour remplacer Visual VNC qui était plutôt buggé et dont le suivi est arrêté depuis longtemps. Il est fort possible que vous ne le connaissiez pas car il est surtout orienté vers l'éducation nationale.
Merci pour votre aide, je n'aurais pu réaliser mon programme sans vous.
Il est en phase de beta test si je puis dire ^^. Il ne devrait pas tarder à passer en version finale, je le posterai dès que ce sera le cas. En fait, j'ai voulu créer ce programme pour remplacer Visual VNC qui était plutôt buggé et dont le suivi est arrêté depuis longtemps. Il est fort possible que vous ne le connaissiez pas car il est surtout orienté vers l'éducation nationale.



