Hello tout le monde,
j'ai crée un gui avec des boutons, chaque bouton lance une fonction.
Ca marche tres bien.
je voudrais améliorer cette gui en permettant un glissé déposé comme option supplémentaire sur le bouton10
J'ai ajouté un peu plus bas un bout de code pour vous aider à me corriger sur le bon placement du code pour ajouter ce comportement de drag&drop
Merci à celui ou celle qui saura me corriger.
Fred.
[R] Help drag and drop sur bouton
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.
[R] Help drag and drop sur bouton
Modifié en dernier par fredmame le mer. 03 avr. 2019 22:13, modifié 3 fois.
- TommyDDR
- Modérateur
- Messages : 2086
- Enregistré le : mar. 22 juil. 2008 21:55
- Localisation : Nantes
- Status : Hors ligne
Re: Help drag and drop sur bouton
Au risque de me répéter :
Si vous voulez que les gens vous aident, fournissez un code qui permet d'être copié collé pour être testé.
Si vous forcez les gens à réécrire du code, 80% de ceux qui comptaient vous aider abandonneront (c'est mon cas pour votre question).
On ne voit pas entre autre la fonction10.
Si vous voulez que les gens vous aident, fournissez un code qui permet d'être copié collé pour être testé.
Si vous forcez les gens à réécrire du code, 80% de ceux qui comptaient vous aider abandonneront (c'est mon cas pour votre question).
On ne voit pas entre autre la fonction10.
3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679
Re: Help drag and drop sur bouton
Hello,
mon programme est en fait beaucoup plus complexe (+ 1600 lignes) mais j'ai écrit ce bout de code pour montrer ce que je souhaite faire
sur le bouton "poussoir" appelé $button10 , je souhaite faire cohabiter à la fois l'appel de fonction10() lorsqu'on appui dessus (ca marche tres bien)
mais aussi un drag and drop d'un fichier qui serait transmis à cette fonction10() et serait alors exécutée.
j'ai commenté les parties de codes que j'essaye d'ajouter ( ; c'est ici que je fais des essais pour faire fonctionner le drag&drop) pour faire fonctionner.
(je sais les includes sont excessifs mais c'est ceux que j'utilise dans mon prog)
en retirant les lignes commentées, le prog fonctionne mais avec mes tests ,non évidemment car je n'arrive pas à savoir quoi placer et où...
il faut que ce soit dans la boucle car c'est un appel de fonction qui peut etre répété
merci des conseils.
Fred.
mon programme est en fait beaucoup plus complexe (+ 1600 lignes) mais j'ai écrit ce bout de code pour montrer ce que je souhaite faire
sur le bouton "poussoir" appelé $button10 , je souhaite faire cohabiter à la fois l'appel de fonction10() lorsqu'on appui dessus (ca marche tres bien)
mais aussi un drag and drop d'un fichier qui serait transmis à cette fonction10() et serait alors exécutée.
j'ai commenté les parties de codes que j'essaye d'ajouter ( ; c'est ici que je fais des essais pour faire fonctionner le drag&drop) pour faire fonctionner.
(je sais les includes sont excessifs mais c'est ceux que j'utilise dans mon prog)
en retirant les lignes commentées, le prog fonctionne mais avec mes tests ,non évidemment car je n'arrive pas à savoir quoi placer et où...
il faut que ce soit dans la boucle car c'est un appel de fonction qui peut etre répété
merci des conseils.
Fred.
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=package.ico
#AutoIt3Wrapper_Outfile=ok.exe
#AutoIt3Wrapper_Res_Comment=
#AutoIt3Wrapper_Res_Description=
#AutoIt3Wrapper_Res_Fileversion=
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_ProductName=
#AutoIt3Wrapper_Res_ProductVersion=
#AutoIt3Wrapper_Res_CompanyName=
#AutoIt3Wrapper_Res_LegalCopyright=
#AutoIt3Wrapper_Res_LegalTradeMarks=
#AutoIt3Wrapper_Res_Language=1036
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPIFiles.au3>
#include <InetConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>
#include <IE.au3>
#include <File.au3>
#include <resourcesEX.au3>
#include <Date.au3>
#Include <Array.au3>
#include <StringConstants.au3>
#include <String.au3>
#include <Inet.au3>
#include <FileConstants.au3>
#include <ColorConstants.au3>
#include <StringSize.au3>
#include <EditConstants.au3>
#include <FontConstants.au3>
#include <GUIConstants.au3>
#include <EditConstants.au3>
$GUI = GUICreate("OK", 503, 272, 273, 188)
GUISetBkColor(0xB9D1EA)
$quitter = GUICtrlCreateButton("Quitter", 448, 16, 41, 41, $BS_ICON,$BS_DEFPUSHBUTTON)
GUICtrlSetTip(-1, "QUITTER")
$Button10 = GUICtrlCreateButton("Button10", 280, 152, 49, 41,$BS_ICON,bitor($BS_DEFPUSHBUTTON, $WS_EX_ACCEPTFILES))
GUICtrlSetTip(-1, "Coucou")
;GUISetState($Button10, $GUI_DROPACCEPTED) ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
GUISetOnEvent($GUI_EVENT_DROPPED,"fonction10") ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
GUISetState(@SW_SHOW,$GUI)
While 1
$MSG = GUIGetMsg()
Switch $MSG
Case -3
Exit
Case $quitter
Exit
Case Else
If $MSG = $Button10 Then
call("fonction10")
Elseif $MSG = $GUI_EVENT_DROPPED Then ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
GUISetOnEvent($GUI_EVENT_DROPPED,"fonction10") ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
msgbox(00,"le fichier","le fichier dragué est :"&@GUI_DragFile) ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
call fonction10(@GUI_DragFile) ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
EndIf
EndSwitch
WEnd
func fonction10()
GUICtrlSetData(@GUI_DropId, @GUI_DragFile) ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
msgbox(00,"test",@GUI_DragFile) ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
$fichierini=@GUI_DragFile ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
$Fichierini= FileOpenDialog("Sélectionnez le fichier", @WorkingDir & "\", "ini ou txt (*.ini;*.txt)", $FD_FILEMUSTEXIST)
If @error Then
MsgBox($MB_ICONWARNING, "Aucun fichier choisi...","Fin de cette fonction",3)
Return
EndIf
msgbox(00,"ok","le fichier est: "&$fichierini)
Return
EndFunc
#AutoIt3Wrapper_Icon=package.ico
#AutoIt3Wrapper_Outfile=ok.exe
#AutoIt3Wrapper_Res_Comment=
#AutoIt3Wrapper_Res_Description=
#AutoIt3Wrapper_Res_Fileversion=
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#AutoIt3Wrapper_Res_ProductName=
#AutoIt3Wrapper_Res_ProductVersion=
#AutoIt3Wrapper_Res_CompanyName=
#AutoIt3Wrapper_Res_LegalCopyright=
#AutoIt3Wrapper_Res_LegalTradeMarks=
#AutoIt3Wrapper_Res_Language=1036
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <WinAPIFiles.au3>
#include <InetConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIFiles.au3>
#include <IE.au3>
#include <File.au3>
#include <resourcesEX.au3>
#include <Date.au3>
#Include <Array.au3>
#include <StringConstants.au3>
#include <String.au3>
#include <Inet.au3>
#include <FileConstants.au3>
#include <ColorConstants.au3>
#include <StringSize.au3>
#include <EditConstants.au3>
#include <FontConstants.au3>
#include <GUIConstants.au3>
#include <EditConstants.au3>
$GUI = GUICreate("OK", 503, 272, 273, 188)
GUISetBkColor(0xB9D1EA)
$quitter = GUICtrlCreateButton("Quitter", 448, 16, 41, 41, $BS_ICON,$BS_DEFPUSHBUTTON)
GUICtrlSetTip(-1, "QUITTER")
$Button10 = GUICtrlCreateButton("Button10", 280, 152, 49, 41,$BS_ICON,bitor($BS_DEFPUSHBUTTON, $WS_EX_ACCEPTFILES))
GUICtrlSetTip(-1, "Coucou")
;GUISetState($Button10, $GUI_DROPACCEPTED) ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
GUISetOnEvent($GUI_EVENT_DROPPED,"fonction10") ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
GUISetState(@SW_SHOW,$GUI)
While 1
$MSG = GUIGetMsg()
Switch $MSG
Case -3
Exit
Case $quitter
Exit
Case Else
If $MSG = $Button10 Then
call("fonction10")
Elseif $MSG = $GUI_EVENT_DROPPED Then ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
GUISetOnEvent($GUI_EVENT_DROPPED,"fonction10") ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
msgbox(00,"le fichier","le fichier dragué est :"&@GUI_DragFile) ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
call fonction10(@GUI_DragFile) ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
EndIf
EndSwitch
WEnd
func fonction10()
GUICtrlSetData(@GUI_DropId, @GUI_DragFile) ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
msgbox(00,"test",@GUI_DragFile) ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
$fichierini=@GUI_DragFile ; c'est ici que je fais des essais pour faire fonctionner le drag&drop
$Fichierini= FileOpenDialog("Sélectionnez le fichier", @WorkingDir & "\", "ini ou txt (*.ini;*.txt)", $FD_FILEMUSTEXIST)
If @error Then
MsgBox($MB_ICONWARNING, "Aucun fichier choisi...","Fin de cette fonction",3)
Return
EndIf
msgbox(00,"ok","le fichier est: "&$fichierini)
Return
EndFunc
- walkson
- Modérateur
- Messages : 1020
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: Help drag and drop sur bouton
Bonjour,
Un petit exemple qui devrait vous aider à construire votre code
Un petit exemple qui devrait vous aider à construire votre code
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $Form1 = GUICreate("Form1", 470, 191, -1, -1, -1, BitOR($WS_EX_ACCEPTFILES,$WS_EX_WINDOWEDGE))
Global $Button1 = GUICtrlCreateButton("Drop ici", 8, 24, 123, 57)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
Global $Button2 = GUICtrlCreateButton("Button1", 136, 24, 123, 57)
Global $Button3 = GUICtrlCreateButton("Button2", 264, 24, 123, 57)
Global $Input1 = GUICtrlCreateInput("", 64, 112, 313, 21)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_DROPPED
GUICtrlSetData($Input1, @GUI_DragFile)
test()
Case $Button1
test()
Case $Button2
Case $Button3
EndSwitch
WEnd
Func test()
$chemin = GUICtrlRead($Input1)
If $chemin = "" Then $chemin = FileOpenDialog("Path",@DesktopDir,"text(*.*)")
ShellExecute("notepad.exe",$chemin)
GUICtrlSetData($Input1,"")
EndFunc
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $Form1 = GUICreate("Form1", 470, 191, -1, -1, -1, BitOR($WS_EX_ACCEPTFILES,$WS_EX_WINDOWEDGE))
Global $Button1 = GUICtrlCreateButton("Drop ici", 8, 24, 123, 57)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
Global $Button2 = GUICtrlCreateButton("Button1", 136, 24, 123, 57)
Global $Button3 = GUICtrlCreateButton("Button2", 264, 24, 123, 57)
Global $Input1 = GUICtrlCreateInput("", 64, 112, 313, 21)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_DROPPED
GUICtrlSetData($Input1, @GUI_DragFile)
test()
Case $Button1
test()
Case $Button2
Case $Button3
EndSwitch
WEnd
Func test()
$chemin = GUICtrlRead($Input1)
If $chemin = "" Then $chemin = FileOpenDialog("Path",@DesktopDir,"text(*.*)")
ShellExecute("notepad.exe",$chemin)
GUICtrlSetData($Input1,"")
EndFunc
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: Help drag and drop sur bouton
merci pour ce code
ca marche mais bon, je galere un peu...
en fait je crois comprendre que le guicreateinput est necessaire pour recuperer la variable ?
alors j'ai modifé en mettant hide deja car esthetiquement je n'ai pas besoin de cet input
Voila déja une modif pour mettre selon mes besoins
il reste à inclure 2 entrées possible : soit en drag and drop, soit via un fileopendialog ...
ca marche mais bon, je galere un peu...
en fait je crois comprendre que le guicreateinput est necessaire pour recuperer la variable ?
alors j'ai modifé en mettant hide deja car esthetiquement je n'ai pas besoin de cet input
Voila déja une modif pour mettre selon mes besoins
il reste à inclure 2 entrées possible : soit en drag and drop, soit via un fileopendialog ...
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <FileConstants.au3>
Global $Form1 = GUICreate("Form1", 470, 191, -1, -1, -1, BitOR($WS_EX_ACCEPTFILES,$WS_EX_WINDOWEDGE))
Global $Button1 = GUICtrlCreateButton("Drop ici", 8, 24, 123, 57)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
Global $Button2 = GUICtrlCreateButton("Button1", 136, 24, 123, 57)
Global $Button3 = GUICtrlCreateButton("Button2", 264, 24, 123, 57)
;Global $Input1 = GUICtrlCreateInput("", 64, 112, 313, 21)
Global $Input1 = GUICtrlCreateInput("", -1, -1, -1, -1)
GUICtrlSetState(-1,$GUI_HIDE)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_DROPPED
GUICtrlSetData($Input1, @GUI_DragFile)
test()
Case $Button1
test()
Case $Button2
Case $Button3
EndSwitch
WEnd
Func test()
local $chemin
if $chemin ="" Then
$chemin= FileOpenDialog("Sélectionnez le fichier", @WorkingDir & "\", "ini ou txt (*.ini;*.txt)", $FD_FILEMUSTEXIST)
msgbox(00,"affichage","le fichier est: "&$chemin)
ElseIf $chemin =@error Then
$chemin= FileOpenDialog("Sélectionnez le fichier", @WorkingDir & "\", "ini ou txt (*.ini;*.txt)", $FD_FILEMUSTEXIST)
msgbox(00,"affichage","le fichier est: "&$chemin)
Elseif
$chemin = GUICtrlRead($Input1)
msgbox(00,"affichage","le fichier est: "&$chemin)
GUICtrlSetData($Input1, "")
EndIf
EndFunc
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <FileConstants.au3>
Global $Form1 = GUICreate("Form1", 470, 191, -1, -1, -1, BitOR($WS_EX_ACCEPTFILES,$WS_EX_WINDOWEDGE))
Global $Button1 = GUICtrlCreateButton("Drop ici", 8, 24, 123, 57)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
Global $Button2 = GUICtrlCreateButton("Button1", 136, 24, 123, 57)
Global $Button3 = GUICtrlCreateButton("Button2", 264, 24, 123, 57)
;Global $Input1 = GUICtrlCreateInput("", 64, 112, 313, 21)
Global $Input1 = GUICtrlCreateInput("", -1, -1, -1, -1)
GUICtrlSetState(-1,$GUI_HIDE)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_DROPPED
GUICtrlSetData($Input1, @GUI_DragFile)
test()
Case $Button1
test()
Case $Button2
Case $Button3
EndSwitch
WEnd
Func test()
local $chemin
if $chemin ="" Then
$chemin= FileOpenDialog("Sélectionnez le fichier", @WorkingDir & "\", "ini ou txt (*.ini;*.txt)", $FD_FILEMUSTEXIST)
msgbox(00,"affichage","le fichier est: "&$chemin)
ElseIf $chemin =@error Then
$chemin= FileOpenDialog("Sélectionnez le fichier", @WorkingDir & "\", "ini ou txt (*.ini;*.txt)", $FD_FILEMUSTEXIST)
msgbox(00,"affichage","le fichier est: "&$chemin)
Elseif
$chemin = GUICtrlRead($Input1)
msgbox(00,"affichage","le fichier est: "&$chemin)
GUICtrlSetData($Input1, "")
EndIf
EndFunc
Modifié en dernier par fredmame le mar. 02 avr. 2019 17:03, modifié 1 fois.
- walkson
- Modérateur
- Messages : 1020
- Enregistré le : ven. 12 août 2011 19:49
- Localisation : Hurepoix
- Status : Hors ligne
Re: Help drag and drop sur bouton
On peut le faire comme ceci si vous préférez
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $chemin
Global $Form1 = GUICreate("Form1", 470, 191, -1, -1, -1, BitOR($WS_EX_ACCEPTFILES,$WS_EX_WINDOWEDGE))
Global $Button1 = GUICtrlCreateButton("Drop ici", 8, 24, 123, 57)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
Global $Button2 = GUICtrlCreateButton("Button1", 136, 24, 123, 57)
Global $Button3 = GUICtrlCreateButton("Button2", 264, 24, 123, 57)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_DROPPED
$chemin = @GUI_DragFile
test()
Case $Button1
test()
Case $Button2
Case $Button3
EndSwitch
WEnd
Func test()
If $chemin = "" Then $chemin = FileOpenDialog("Path",@DesktopDir,"text(*.*)")
If Not @error Then msgbox(0,"affichage","le fichier est: "&$chemin)
$chemin = ""
EndFunc
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Global $chemin
Global $Form1 = GUICreate("Form1", 470, 191, -1, -1, -1, BitOR($WS_EX_ACCEPTFILES,$WS_EX_WINDOWEDGE))
Global $Button1 = GUICtrlCreateButton("Drop ici", 8, 24, 123, 57)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
Global $Button2 = GUICtrlCreateButton("Button1", 136, 24, 123, 57)
Global $Button3 = GUICtrlCreateButton("Button2", 264, 24, 123, 57)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_DROPPED
$chemin = @GUI_DragFile
test()
Case $Button1
test()
Case $Button2
Case $Button3
EndSwitch
WEnd
Func test()
If $chemin = "" Then $chemin = FileOpenDialog("Path",@DesktopDir,"text(*.*)")
If Not @error Then msgbox(0,"affichage","le fichier est: "&$chemin)
$chemin = ""
EndFunc
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Re: Help drag and drop sur bouton
Merci Walkson, c'est bien comme ca.!!
j'ai modifié le code pour qu'à la fois l'input ne soit pas visible et que le drag&drop puisse etre reconnu sur le bouton indépendamment d'un autre
Ce qui est dommage pour des raisons purement graphique, c'est qu'on soit obligé de mettre le comportement de drag&drop sur toute l'interface graphique via le guicreate et $WS_EX_ACCEPTFILES
Je trouve que cela prêterait moins à confusion pour l'utilisateur que tout la gui soit bloquée en drag&drop sauf le bouton, donc un $WS_EX_ACCEPTFILES sur le guictrlcreatebutton serait plus comprehensible à mes yeux...
Enfin bon, j'ai compris le principe et voila donc ce petit code exemple pour plusieurs boutons des fonctions propres à chaque bouton
j'ai modifié le code pour qu'à la fois l'input ne soit pas visible et que le drag&drop puisse etre reconnu sur le bouton indépendamment d'un autre
Ce qui est dommage pour des raisons purement graphique, c'est qu'on soit obligé de mettre le comportement de drag&drop sur toute l'interface graphique via le guicreate et $WS_EX_ACCEPTFILES
Je trouve que cela prêterait moins à confusion pour l'utilisateur que tout la gui soit bloquée en drag&drop sauf le bouton, donc un $WS_EX_ACCEPTFILES sur le guictrlcreatebutton serait plus comprehensible à mes yeux...
Enfin bon, j'ai compris le principe et voila donc ce petit code exemple pour plusieurs boutons des fonctions propres à chaque bouton
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <File.au3>
Global $Form1 = GUICreate("Test drag&drop sur boutons", 470, 191, -1, -1,-1, $WS_EX_ACCEPTFILES)
Global $Button1 = GUICtrlCreateButton("BOUTON 1", 8, 24, 123, 57)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
Global $Button2 = GUICtrlCreateButton("BOUTON 2", 136, 24, 123, 57)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
Global $Button3 = GUICtrlCreateButton("BOUTON 3", 264, 24, 123, 57)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_DROPPED
If @GUI_DropId = $button1 Then
$file=@GUI_DragFile
test1($file)
ElseIf @GUI_DropId = $button2 Then
$file=@GUI_DragFile
test2($file)
EndIf
Case $Button1
$file=""
test1($file)
Case $Button2
$file=""
test2($file)
Case $Button3
test3()
EndSwitch
WEnd
Func test1($file)
If $file = "" Then $file = FileOpenDialog("Choisissez un fichier",@DesktopDir,"(*.*)")
If Not @error Then msgbox(0,"affichage par fonction1","le fichier est: "&$file)
$file = ""
EndFunc
Func test2($file)
If $file = "" Then $file= FileOpenDialog("Choisissez un fichier",@DesktopDir,"(*.*)")
If Not @error Then msgbox(0,"affichage par fonction2","le fichier est: "&$file)
$file = ""
EndFunc
Func test3()
msgbox($MB_ICONWARNING,"attention","voici la fonction3"&@crlf&"lancée par le bouton 3"&@crlf&"et qui se coupe toute seule!",3)
Endfunc
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <File.au3>
Global $Form1 = GUICreate("Test drag&drop sur boutons", 470, 191, -1, -1,-1, $WS_EX_ACCEPTFILES)
Global $Button1 = GUICtrlCreateButton("BOUTON 1", 8, 24, 123, 57)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
Global $Button2 = GUICtrlCreateButton("BOUTON 2", 136, 24, 123, 57)
GUICtrlSetState(-1, $GUI_DROPACCEPTED)
Global $Button3 = GUICtrlCreateButton("BOUTON 3", 264, 24, 123, 57)
GUISetState(@SW_SHOW)
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $GUI_EVENT_DROPPED
If @GUI_DropId = $button1 Then
$file=@GUI_DragFile
test1($file)
ElseIf @GUI_DropId = $button2 Then
$file=@GUI_DragFile
test2($file)
EndIf
Case $Button1
$file=""
test1($file)
Case $Button2
$file=""
test2($file)
Case $Button3
test3()
EndSwitch
WEnd
Func test1($file)
If $file = "" Then $file = FileOpenDialog("Choisissez un fichier",@DesktopDir,"(*.*)")
If Not @error Then msgbox(0,"affichage par fonction1","le fichier est: "&$file)
$file = ""
EndFunc
Func test2($file)
If $file = "" Then $file= FileOpenDialog("Choisissez un fichier",@DesktopDir,"(*.*)")
If Not @error Then msgbox(0,"affichage par fonction2","le fichier est: "&$file)
$file = ""
EndFunc
Func test3()
msgbox($MB_ICONWARNING,"attention","voici la fonction3"&@crlf&"lancée par le bouton 3"&@crlf&"et qui se coupe toute seule!",3)
Endfunc