[R] Etrangeté du Darg&Drop

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
Répondre
Avatar du membre
Ahbadiane
Niveau 5
Niveau 5
Messages : 139
Enregistré le : jeu. 20 déc. 2007 22:39
Localisation : Paris
Status : Hors ligne

[R] Etrangeté du Darg&Drop

#1

Message par Ahbadiane »

Bonjour,

Dans l'exemple suivant, un drag & drop d'un fichier dans le champ de saisie entraine la modification du texte du bouton !!!

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $FormDD = GUICreate("Drag&Drop", 550, 90, -1, -1, -1, $WS_EX_ACCEPTFILES)
Global $InputFichier = GUICtrlCreateInput("", 8, 12, 520, 21)
Global $ButtonQuitter = GUICtrlCreateButton("Quitter", 460, 52, 75, 25, 0)
GUICtrlSetState($InputFichier, $GUI_DROPACCEPTED)
GUISetState(@SW_SHOW)
WinSetOnTop("Drag&Drop", "", 1)
While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $ButtonQuitter
        Exit
    Case $GUI_EVENT_DROPPED
        GUICtrlSetData($GUI_EVENT_DROPPED, @GUI_DRAGFILE)
    EndSwitch
WEnd
Essayez, c'est presque drôle au regard du code correspondant. Mais surtout si vous avez une explication, je suis preneur

PS : j'utilise AutoIt v3.3.6.0
Modifié en dernier par Ahbadiane le mer. 14 avr. 2010 20:30, modifié 1 fois.
Avatar du membre
Iste
Niveau 11
Niveau 11
Messages : 1870
Enregistré le : jeu. 04 déc. 2008 14:21
Localisation : 76
Status : Hors ligne

Re: [..] Etrangeté du Darg&Drop

#2

Message par Iste »

car "GUICtrlSetData($GUI_EVENT_DROPPED, @GUI_DRAGFILE)" bah c'est pas bon !
GUICtrlSetData() prend en parametre 1: l'id du controle, 2: le contenu

En indiquant le control "$GUI_EVENT_DROPPED", ca bug et choisi le bouton.

Ce qui est étrange par contre, c'est que l'input se remplisse :/

Bref,

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $FormDD = GUICreate("Drag&Drop", 550, 90, -1, -1, -1, $WS_EX_ACCEPTFILES)
Global $InputFichier = GUICtrlCreateInput("", 8, 12, 520, 21)
Global $ButtonQuitter = GUICtrlCreateButton("Quitter", 460, 52, 75, 25, 0)
GUICtrlSetState($InputFichier, $GUI_DROPACCEPTED)
GUISetState(@SW_SHOW)
WinSetOnTop("Drag&Drop", "", 1)
While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $ButtonQuitter
        Exit
    Case $GUI_EVENT_DROPPED
        GUICtrlSetData($InputFichier, @GUI_DRAGFILE)
    EndSwitch
WEnd
 

ou meme ceci, vu qu'autoit semble remplir automatiquement les input en présence de fichiers,

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $FormDD = GUICreate("Drag&Drop", 550, 90, -1, -1, -1, $WS_EX_ACCEPTFILES)
Global $InputFichier = GUICtrlCreateInput("", 8, 12, 520, 21)
Global $ButtonQuitter = GUICtrlCreateButton("Quitter", 460, 52, 75, 25, 0)
GUICtrlSetState($InputFichier, $GUI_DROPACCEPTED)
GUISetState(@SW_SHOW)
WinSetOnTop("Drag&Drop", "", 1)
While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $ButtonQuitter
        Exit
    EndSwitch
WEnd
 
Signez ici
Avatar du membre
Ahbadiane
Niveau 5
Niveau 5
Messages : 139
Enregistré le : jeu. 20 déc. 2007 22:39
Localisation : Paris
Status : Hors ligne

[R] Etrangeté du Darg&Drop

#3

Message par Ahbadiane »

Merci Iste,
La solution est dans @GUI_DROPID : Qui donne l'identificateur du contrôle

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $FormDD = GUICreate("Drag&Drop", 550, 90, -1, -1, -1, $WS_EX_ACCEPTFILES)
Global $InputFichier = GUICtrlCreateInput("", 8, 12, 520, 21)
Global $ButtonQuitter = GUICtrlCreateButton("Quitter", 460, 52, 75, 25, 0)
GUICtrlSetState($InputFichier, $GUI_DROPACCEPTED)
GUISetState(@SW_SHOW)
WinSetOnTop("Drag&Drop", "", 1)
While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $ButtonQuitter
        Exit
    Case $GUI_EVENT_DROPPED
        GUICtrlSetData(@GUI_DROPID, @GUI_DRAGFILE)
    EndSwitch
WEnd
Avatar du membre
jl56
Niveau 7
Niveau 7
Messages : 415
Enregistré le : mer. 24 oct. 2007 22:42
Localisation : 56000
Status : Hors ligne

Re: [R] Etrangeté du Darg&Drop

#4

Message par jl56 »

Bonjour

Je ne comprend pas votre intérêt
si comme je le pense ,vous désirez connaitre le nom du fichier alors

Code : Tout sélectionner

#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Global $FormDD = GUICreate("Drag&Drop", 550, 90, -1, -1, -1, $WS_EX_ACCEPTFILES)
Global $InputFichier = GUICtrlCreateInput("", 8, 12, 520, 21)
Global $ButtonQuitter = GUICtrlCreateButton("Quitter", 460, 52, 75, 25, 0)
GUICtrlSetState($InputFichier, $GUI_DROPACCEPTED)
GUISetState(@SW_SHOW)
WinSetOnTop("Drag&Drop", "", 1)
While 1
    Switch GUIGetMsg()
    Case $GUI_EVENT_CLOSE, $ButtonQuitter
        Exit
    Case $GUI_EVENT_DROPPED
        MsgBox(0,"Fichier",@GUI_DragFile)
        EndSwitch
WEnd
devrait suffire. Dans votre ligne

Code : Tout sélectionner

GUICtrlSetData($GUI_EVENT_DROPPED, @GUI_DRAGFILE)
vous affectez la variable $InputFichier par la valeur qu'il a déjà par @GUI_DRAGFILE
la je ne voie pas du tout l'intérêt
A+ JL56
Répondre