[R] Petit souci de drag and drop .

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
Arkenix
Niveau 4
Niveau 4
Messages : 59
Enregistré le : ven. 27 mai 2011 23:42
Status : Hors ligne

[R] Petit souci de drag and drop .

#1

Message par Arkenix »

Bonjour

Apres pas mal de temps à voyager au travers du site pour y trouver des solutions (avec succes).
Voilà qu'aujourd'hui je me trouve devant une recherche sans réponse. :(

Je vais donc vous exposer mon problème, a qui je pense trouvera une solution et une explication simple.

Pour cela, je vais tenter d'être le plus clair possible.

Le problème est le suivant:

Actuellement je script un petit programme d'installation.
celui ci installera des fichiers complémentaire a un programme déjà installé dans l'ordinateur.
Pour faciliter la tache a mes utilisateur, au lieu de leur faire une installation "lambda" avec un horrible bouton "parcourir"
J'ai réalisé une zone (en input actuellement) qui permet de faire un drag and drop du racourci bureau de ce fameux programe.

A l'aide d'un FileGetShortcut je peut donc savoir ou est installer le logiciel de base.

C'est maintenant que ca se complique.
Je voudrai que mon input lis en continu son contenu, et SI il y trouve une donnée alors celui ci se HIDE

Pour cela je fonctionne comme ceci :

Code : Tout sélectionner

if GUICtrlSetState($file, $GUI_SHOW Then
_HIDE()
EndIf
le tout dans un while biensure.

Pour la func la voici :

Code : Tout sélectionner

Func _HIDE()
        $read = GUICtrlRead($file)
        if $read = "" Then
else
        $test = FileGetShortcut($read)
        GUICtrlSetState($file, $GUI_HIDE)
        GUICtrlSetState($S4ok, $GUI_SHOW)
        EndIf
    EndFunc
Comme vous pouvez le voir, mon but ici est de ne rien faire si il n'y a rien dans l'input
En revanche si il y trouve quelque chose, il cache l'input pour le remplacer par un bouton $S4ok


Le seul souci c'est que mon input se met a clignoter en continue !
et ne se HIDE pas si il y a un contenu.

=/


ALORS ...


Deux questions .
Avez vous une idée d'amélioration sur mon script de base ?
ou
Avez vous une autre méthode pour récupérer par drag and drop l'emplacement d'un fichier via son raccourci (.ink)?

J'espère ne pas avoir trop bafoué trop de règles du forum et je vous remercie pour les réponses apportées

Cordialement Arkenix
Modifié en dernier par Arkenix le sam. 28 mai 2011 10:07, modifié 1 fois.
Projet Autoit : Faire un jeu "Point & Click" > http://www.lecoindaide.com/forum/viewforum.php?f=44
Avatar du membre
Arkenix
Niveau 4
Niveau 4
Messages : 59
Enregistré le : ven. 27 mai 2011 23:42
Status : Hors ligne

Re: [..] Petit souci de drag and drop .

#2

Message par Arkenix »

C'est encore moi ... Encore une fois j'ai été de mauvaise langue ^^

J'ai trouver une solution alternative mais fonctionnel que voici :

Code : Tout sélectionner

While 1
$read = GUICtrlRead($file)
$R = GUICtrlGetState($file)
if $read <> "" and $R = 88 Then
    $test = FileGetShortcut($read)
        GUICtrlSetState($file, $GUI_HIDE)
        GUICtrlSetState($S4ok, $GUI_SHOW)
    endif

Wend
Cela suffi pour réaliser ce dont j'ai envie .

Néanmoins, Si vous avez des solutions plus simple ou de meilleur forme je suis preneur.

C'est d'ailleurs dans cette optique que je ne met pas en résolu pour le moment, afin de voir vos propositions.
Demain a ma première connexion je changerais ça je vous laisse un peu de temps au cas ou 8D.

Merci pour vos aides a bientot

Cordialement Arkenix
Projet Autoit : Faire un jeu "Point & Click" > http://www.lecoindaide.com/forum/viewforum.php?f=44
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11830
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [R] Petit souci de drag and drop .

#3

Message par Tlem »

La boucle est une solution, mais elle bride grandement votre code, car si vous devez faire autre chose, vous devrez l'incorporer dans cette même boucle !
Personnellement, j'adopterais une des deux solutions suivante :

1 - Utilisation de AdlibRegister afin de lancer une fonction de test de l'input régulièrement. La fonction fait exactement ce que vous avez mis dans votre code, mais l'avantage c'est de ne pas être prisonnier de la boucle While.

2 - Utilisation de GUIRegisterMsg afin de surveiller les changement de l'input. Idem que pour la solution 1, mais là, puisque nous somme en callback, même si le code est lourd, le test sera effectué, ce qui n'est pas le cas de AdlibRegister lorsque vous êtes dans une boucle d'exécution For/Next, etc ...

La solution N°2 est à mon le meilleur choix, mais le code à mettre en œuvre est bien plus lourd qu'un simple appel à une fonction de base. ;)
Si vous ne voulez pas vous compliquer la vie, alors utilisez AdlibRegister, ce sera toujours plus évolutif que la boucle While/Wend. :mrgreen:
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é".
Avatar du membre
Arkenix
Niveau 4
Niveau 4
Messages : 59
Enregistré le : ven. 27 mai 2011 23:42
Status : Hors ligne

Re: [R] Petit souci de drag and drop .

#4

Message par Arkenix »

Merci Tlem, comme je peut voir toujours sur le pied de guerre pour répondre à nous pauvres développeur de pacotille :P
je me penche sur le sujet et merci du tuyau :D
Projet Autoit : Faire un jeu "Point & Click" > http://www.lecoindaide.com/forum/viewforum.php?f=44
Répondre