Page 1 sur 1
[..] Boite de Dialogue à boutons
Posté : mar. 10 avr. 2012 18:00
par Fragmeister
Bonjour,
J'aimerais savoir s'il était possible de faire une boite de dialogue avec plusieurs bouton à cliquer qui feraient chacun une action différente (qui affecterait à une variable un chiffre différent).
Illustration :
Merci d'avance pour votre aide.
Re: [..]Boite de Dialogue à boutons
Posté : mar. 10 avr. 2012 18:36
par Wardow
Salut, Je ne pence pas qu'une telle boite de dialogue soit possible mais pourquoi ne pas faire une fenêtre avec les boutons (utilise le logiciel Koda pour faire quelque chose de beau) puis pour le changement de la valeur de la variable utilise
Code : Tout sélectionner
$msg = GUIGetMsg()
While 1
Switch GUIGetMsg()
case $bouton1
$mavariable = 1
case $bouton2
$mavariable = 2
EndSwitch
WEnd
Re: [..] Boite de Dialogue à boutons
Posté : mar. 10 avr. 2012 21:57
par lesolutionneur
Oui, le mieux reste de faire ta propre fenêtre avec par exemple koda ou ISN form designer.
Re: [..] Boite de Dialogue à boutons
Posté : mer. 11 avr. 2012 16:46
par TommyDDR
Personnellement je déconseille Koda, si vous faites une fenêtre compliqué, vous vous retrouverez rapidement avec des $btn1 $btn2 $btn3 au lieu d'un bon tableau $btn[3] plus facil à gérer.
Re: [..] Boite de Dialogue à boutons
Posté : jeu. 12 avr. 2012 10:14
par PandiPanda
Bonjour,
Perso j'utilise Koda simplement pour la position de mes boutons ...
ça m'évite vraiment de me cassé la tête '^^
après certes utilisé un tableau est plus "aisé" au niveau du codage, mais pour la compréhension et la relecture du code c'est beaucoup moins facile
Re: [..] Boite de Dialogue à boutons
Posté : jeu. 12 avr. 2012 10:59
par blacksoul305
PandiPanda a écrit :Bonjour,
Perso j'utilise Koda simplement pour la position de mes boutons ...
ça m'évite vraiment de me cassé la tête '^^
après certes utilisé un tableau est plus "aisé" au niveau du codage, mais pour la compréhension et la relecture du code c'est beaucoup moins facile
+1
Persos, moi qui suis un peu en froid avec les tableaux, je l'aime bien mon petit Koda !

Re: [..] Boite de Dialogue à boutons
Posté : jeu. 12 avr. 2012 13:50
par TommyDDR
blacksoul305 a écrit :Persos, moi qui suis un peu en froid avec les tableaux, je l'aime bien mon petit Koda !

Très bien, je vous met au défi de créer l'équivalent de ce code sans créer de tableau, tout en respectant
PandiPanda a écrit :après certes utilisé un tableau est plus "aisé" au niveau du codage, mais pour la compréhension et la relecture du code c'est beaucoup moins facile
Le code est tout simple, on créer une fenêtre avec 300 labels (pourquoi pas rose -> 0xFFAAAA) nommé au hazard de 0 à 999, quand on clic sur un label, on affiche dans un tooltip "Label : " suivi du numéro du label suivi du texte du label.
Voila le code avec un tableau :
► Afficher le textecode
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
Opt("MustDeclareVars", 1)
Opt("GUIOnEventMode", 1)
Global $Gui
Global $Labels[300]
$Gui = GUICreate("Random", 530, 310)
GUISetOnEvent($GUI_EVENT_CLOSE, "quit")
RemplirLabels($Labels)
GUISetState()
While(True)
Sleep(10)
WEnd
Func RemplirLabels(ByRef $Labels)
Local $x
Local $y
Local $Palier = 20
For $i = 0 To UBound($Labels, 1)-1
$x = 5 + Floor($i/$Palier)*35
$y = 5 + Mod($i, $Palier)*15
$Labels[$i] = GUICtrlCreateLabel(Random(0, 999, 1), $x, $y, 30, 13, $SS_CENTER)
GUICtrlSetBkColor($Labels[$i], 0xFFAAAA)
GUICtrlSetOnEvent($Labels[$i], "LabelClic")
Next
EndFunc
Func LabelClic()
Local $LabelClic = -1
For $i = 0 To UBound($Labels, 1)-1
If($Labels[$i] = @GUI_CtrlId) Then
$LabelClic = $i
ExitLoop
EndIf
Next
ToolTip("Label numero " & $i+1 & " : " & GUICtrlRead($Labels[$i]))
EndFunc
Func quit()
Exit
EndFunc
J'attends le votre sans tableau ^^
PS : On est tous passé par "les tableaux c'est compliqué". Je cherche juste à vous faire comprendre que les tableaux, c'est vraiment puissant et ça n'enlève en rien la compréhension / relecture du code, au contraire, ça l'améliore.
Re: [..] Boite de Dialogue à boutons
Posté : jeu. 12 avr. 2012 14:11
par Wardow
Je crois que on part dans le hors sujet la ... non ?
De plus, je ne pence pas que quelqu'un aurais besoin d'une telle fenêtre
Re: [..] Boite de Dialogue à boutons
Posté : jeu. 12 avr. 2012 14:49
par TommyDDR
C'était un exemple d'une fenêtre simple à mette en œuvre et nécessitant un tableau.
De plus, on peut aider de deux manières :
1) En offrant quelque chose de fonctionnel sur le coup mais qui au final ne fait pas beaucoup apprendre.
2) En réexpliquant certaines bases mal comprises et qui permettent à l'utilisateur de s'en sortir par lui même dans le problème concerné et dans de futures problèmes.
Après, je vous l'accorde, c'est de mon humble avis de penser que les utilisateurs de ce forum sont avide d'apprendre.
Re: [..] Boite de Dialogue à boutons
Posté : jeu. 12 avr. 2012 15:03
par mikell
Ah my gode qu'ils sont sympas ces délires autoitesques qui surviennent de manière récurrente...
+1 pour les tableaux, mais avec une limite d'utilisation pas négligeable : petit souci si on veut nommer ses boutons $ouvre, $ferme, $ajoute, $supprime, etc pour éviter de se perdre avec les $button1, $button2, $button3 etc qui sont une vraie vérole dès qu'on veut gérer proprement un code
Koda c'est bien, mais AMHA plutôt pour de la 'mise en page', parce qu'un soft qui fait le boulot de création à votre place c'est pas génial pour progresser (surtout quand on voit certains machins surréalistes que Koda est capable de pondre)
De toute façon le post initial (faudrait pas le perdre de vue, lui) évoque une gui à 4 boutons à actions distinctes, et une simple lecture du fichier d'aide et de ses exemples permet de faire ça très facilement... ce qui est donc la seule bonne réponse à apporter à ce topic, vu qu'ici on est dans l'aide et pas dans la demande de création de scripts

Re: [..] Boite de Dialogue à boutons
Posté : jeu. 12 avr. 2012 16:23
par TommyDDR
Astuce pour ceux qui veulent rendre le code plus lisible avec des tableaux :
Code : Tout sélectionner
Global $Bouton[4]
Global $OUVRE = 0
Global $FERME = 1
Global $AJOUTE = 2
Global $SUPPRIME = 3
Après, on peut utiliser le tableau comme ça :
Re: [..] Boite de Dialogue à boutons
Posté : jeu. 12 avr. 2012 17:39
par Iste
On peut toujours faire autrement !
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
Opt("MustDeclareVars", 1)
Opt("GUIOnEventMode", 1)
Global $Gui
Global $Labels = 300
$Gui = GUICreate("Random", 530, 310)
GUISetOnEvent($GUI_EVENT_CLOSE, "quit")
RemplirLabels()
GUISetState()
While(True)
Sleep(10)
WEnd
Func RemplirLabels()
Local $x
Local $y
Local $Palier = 20
For $i = 0 To $Labels
$x = 5 + Floor($i/$Palier)*35
$y = 5 + Mod($i, $Palier)*15
Assign("lab" & $i, GUICtrlCreateLabel(Random(0, 999, 1), $x, $y, 30, 13, $SS_CENTER), 2)
GUICtrlSetBkColor(-1, 0xFFAAAA)
GUICtrlSetOnEvent(-1, "LabelClic")
Next
EndFunc
Func LabelClic()
Local $LabelClic = -1
For $i = 0 To $Labels
If(Eval("lab" & $i) = @GUI_CtrlId) Then
$LabelClic = $i
ExitLoop
EndIf
Next
ToolTip("Label numero " & $i+1 & " : " & GUICtrlRead(Eval("lab" & $i)))
EndFunc
Func quit()
Exit
EndFunc
Bon allé, vu que je suis parti dans de la bonne grosse mauvaise foi useless on peut faire ca aussi :
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
Opt("MustDeclareVars", 1)
Opt("GUIOnEventMode", 1)
Global $Gui
Global $Labels = 300
$Gui = GUICreate("Random", 530, 310)
GUISetOnEvent($GUI_EVENT_CLOSE, "quit")
RemplirLabels()
GUISetState()
While(True)
Sleep(10)
WEnd
Func RemplirLabels()
Local $x
Local $y
Local $Palier = 20
For $i = 0 To $Labels
$x = 5 + Floor($i/$Palier)*35
$y = 5 + Mod($i, $Palier)*15
GUICtrlCreateLabel(Random(0, 999, 1), $x, $y, 30, 13, $SS_CENTER)
GUICtrlSetBkColor(-1, 0xFFAAAA)
GUICtrlSetOnEvent(-1, "LabelClic")
Next
EndFunc
Func LabelClic()
Local $LabelClic = -1
For $i = 0 To $Labels
If($i = @GUI_CtrlId) Then
$LabelClic = $i
ExitLoop
EndIf
Next
ToolTip("Label numero " & $i+1 & " : " & GUICtrlRead($i))
EndFunc
Func quit()
Exit
EndFunc
Re: [..] Boite de Dialogue à boutons
Posté : jeu. 12 avr. 2012 17:48
par mikell
Pffff
[mode Troll ON]
Tin, le mec il demande 4 boutons et il se retrouve avec 300 labels...
C'est ça, la générosité du forum autoit.fr !!
[mode Troll OFF]

Re: [..] Boite de Dialogue à boutons
Posté : ven. 13 avr. 2012 09:17
par TommyDDR
Merci Iste, je voulais justement que quelqu'un me propose ça ^^.
Mais cela revient à créer un tableau en beaucoup moins sécurisé
PS : J'aurais bien proposé une solution mais notre ami "Fragmeister" n'est toujours pas revenu voir ce qu'est devenu son post.
Re: [..] Boite de Dialogue à boutons
Posté : ven. 13 avr. 2012 13:49
par Iste
C'sur, je pense aussi que la solution des tableaux est de loin la meilleur.
Mais du coup ce topic montre bien qu'on ne doit pas forcément s’arrêter a une solution "qui marche" !
Mon 1er exemple est trop puissant (et potentiellement lent)
Mon second est basé sur un comportement d'AutoIt qui peut changer
Et voici un 3em, qui est peut être dégueu avec certain thème ou version de windows :
► Afficher le texte
Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
Opt("MustDeclareVars", 1)
Opt("GUIOnEventMode", 1)
Global $Gui
Global $Labels = 300
$Gui = GUICreate("Random", 530, 310)
GUISetOnEvent($GUI_EVENT_CLOSE, "quit")
RemplirLabels()
GUISetState()
While(True)
Sleep(10)
WEnd
Func RemplirLabels()
Local $x
Local $y
Local $Palier = 20
For $i = 0 To $Labels
$x = 5 + Floor($i/$Palier)*35
$y = 5 + Mod($i, $Palier)*15
GUICtrlCreateLabel(Random(0, 999, 1) & @CRLF & $i, $x, $y, 30, 13, $SS_CENTER)
GUICtrlSetBkColor(-1, 0xFFAAAA)
GUICtrlSetOnEvent(-1, "LabelClic")
Next
EndFunc
Func LabelClic()
Local $text = StringSplit(GUICtrlRead(@GUI_CtrlId), @CRLF, 1)
ToolTip("Label numero " & $text[2]+1 & " : " & $text[1])
EndFunc
Func quit()
Exit
EndFunc
Re: [..] Boite de Dialogue à boutons
Posté : ven. 13 avr. 2012 14:48
par TommyDDR
Je ne ferais pas de commentaires sur la 3eme méthode ^^
On peut aussi cacher la poussière sous le tapis, ça ne se verra pas ^^
Re: [..] Boite de Dialogue à boutons
Posté : lun. 16 avr. 2012 21:10
par Fragmeister
Merci à tous pour vos réponse, où puis-je télécharger ISN form designer ?
TommyDDR a écrit :Personnellement je déconseille Koda, si vous faites une fenêtre compliqué, vous vous retrouverez rapidement avec des $btn1 $btn2 $btn3 au lieu d'un bon tableau $btn[3] plus facil à gérer.
Est-ce que tu utilise ce logiciel ?
Re: [..] Boite de Dialogue à boutons
Posté : mar. 17 avr. 2012 13:44
par TommyDDR
Je déconseille l'utilisation des éditeurs graphiques en général ^^
Ils sont très bien pour vous pondre du code fonctionnel sur le moment, mais dès que vous voulez faire des choses plus complexes avec vos fenêtre, vous vous rendez compte que vous devez vous retaper une grosse partie du code généré.