Page 1 sur 1
[R] CheckBox
Posté : sam. 06 mars 2010 09:44
par Mikaas
Bonjour j'ai un petit souci avec la reconnaissance de mes checkbox
► Afficher le texteMon code de base
Code : Tout sélectionner
#RequireAdmin
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("MustDeclareVars", 1)
Opt("GUIOnEventMode", 1)
Global $check1, $msg, $check2, $check3, $TERMINER
GUICreate("My GUI Checkbox")
$check1 = GUICtrlCreateCheckbox("CHECKBOX 1", 10, 10, 120, 20)
$check2 = GUICtrlCreateCheckbox("CHECKBOX 2", 10, 40, 120, 20)
$check3 = GUICtrlCreateCheckbox("CHECKBOX 3", 10, 70, 120, 20)
$TERMINER = GUICtrlCreateButton("TERMINER", 10, 150, 75, 25, $WS_GROUP)
GUICtrlSetOnEvent(-1, "TERM")
GUISetOnEvent($GUI_EVENT_CLOSE, "QUITTER")
GUISetState(@SW_SHOW)
Func TERM()
If _IsChecked($check1) Then
IniWrite("test.ini", "SETTING", "1", " 1")
Else
IniWrite("test.ini", "SETTING", "1", " 0")
EndIf
If _IsChecked($check2) Then
IniWrite("test.ini", "SETTING", "2", " 1")
Else
IniWrite("test.ini", "SETTING", "2", " 0")
EndIf
If _IsChecked($check3) Then
IniWrite("test.ini", "SETTING", "3", " 1")
Else
IniWrite("test.ini", "SETTING", "3", " 0")
EndIf
splash()
EndFunc
Func splash()
SplashTextOn("", "Création de votre setting en cours ...", "400", "50")
Sleep(1500)
SplashTextOn("", "Setting Correctement Enregistré", "400", "50")
Sleep(1000)
SplashOff()
Sleep(100)
Exit
EndFunc
Func _IsChecked($control)
Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED
EndFunc
Func QUITTER()
Exit 0
EndFunc
While 1
Sleep(10)
WEnd
dans un ini il ajoute la ligne : 1 si coché, 0 si vide
j'aimerai qu'à sa ré ouverture du exe il mette par défaut les valeurs du ini
ex :
si "test.ini", "SETTING", "1" = 1 il coche la checkbox correspondante au démarrage du script si c'est = à 0 alors il reste vide ...
Merci pour l'aide

Re: [..] CheckBox
Posté : sam. 06 mars 2010 10:15
par Sparkdaemon
Code : Tout sélectionner
If $TON_INI = 1 then Guictrlsetdata($CheckBox1, $GUI_CHECKED)
Re: [..] CheckBox
Posté : sam. 06 mars 2010 10:19
par Tlem
Je ne vois pas très bien ou est la difficulté dans votre demande !!!
Puisque vous voulez appliquer des valeurs en fonction d'un fichier .ini, la première chose sera de lire ce fichier.
Le plus simple sera sans doute de rajouter juste avant l'affichage de votre GUI (
GUISetState(@SW_SHOW)) le lancement d'une fonction qui mettra à jour vos
CheckBox.
Dans cette fonction, on contrôle d'abord la présence du fichier .ini et on continue (si existant).
Ensuite, pour chaque valeur de CheckBox lue à partir du fichier .ini, on applique l'état :
Code : Tout sélectionner
; Pour infos :
; $GUI_CHECKED = 1 et $GUI_UNCHECKED = 4 voir GUIConstantsEx.au3
GUICtrlSetState($check1, $GUI_CHECKED)
;ou
GUICtrlSetState($check1, $GUI_UNCHECKED)
Edit : Coiffé sue le poteau par sparky.
Mais je laisse quand même mon message.
Re: [..] CheckBox
Posté : sam. 06 mars 2010 10:22
par Mikaas
Sparkdaemon a écrit :Code : Tout sélectionner
If $TON_INI = 1 then Guictrlsetdata($CheckBox1, $GUI_CHECKED)
$TON_INI ?
ne serai t'il pas plus correct :
If $check1 = 1 then Guictrlsetdata($CheckBox1, $GUI_CHECKED) ?
si oui cela ne fonctionne pas

sinon je vois pas se que peut représenté les $TON_INI
Re: [..] CheckBox
Posté : sam. 06 mars 2010 10:38
par Tlem
Pfffff !!!
$TON_INI représente la valeur de l'état de votre CheckBox dans le fichier .ini.
Ensuite, pour lire l'état d'une CheckBox, ce n'est pas comme cela qu'on procède. Vous trouverez la réponse dans la partie Remarks de l'aide de la commande GUICtrlRead().
Et enfin, pourquoi contrôler l'état de vos CheckBox puisque vous voulez placer les valeurs du fichier .ini. En procédant comme cela, vous rajoutez une étape totalement inutile ...
Re: [..] CheckBox
Posté : sam. 06 mars 2010 11:08
par Mikaas
Tous simplement pour ne pas a avoir de nouveau a le configurer lorsque j'ouvre le script
si je termine de nouveau le script sans cocher a chaque ouverture il est 0 donc c'est pas se que je cherche :s
@Tlem : à chaque fois que je pose une question, j'ai bien l'impression de vous faire chier ...
Si c'est le cas suffit de le dire clairement on trouvera une solution.
Au pire des cas pas obligé de me répondre ...
Edit : Le ini n'est pas la pour regarder les choses inscrite dedant les utilisateurs ne verrons que la GUI, si après l'ouverture il affiche coché ou non selon le choix du ini on saura si oui ou non nous avions bien selectionné la checkbox auparavant et qu'il à bien été enregistré ...
Re: [..] CheckBox
Posté : sam. 06 mars 2010 11:09
par Tlem
Mikaas a écrit :@Tlem : à chaque fois que je pose une question, j'ai bien l'impression de vous faire chier ...
Les questions que vous posez sont très souvent le résultat d'un manque de recherche (personnelle ou sur le forum), donc je pense que si vous faisiez quelques efforts, vous auriez vos réponses.
En ce qui me concerne, la première fois ou j'ai cherché à lire l'état d'une
CheckBox, j'ai mis un certain temps à trouver la réponse. Mais après de longues recherches, j'ai trouvé sans avoir pour autant posé la question sur un forum (et maintenant je m'en rappel).
Pour votre problème, je n'arrive vraiment pas à comprendre votre logique ...
Si vous avez une configuration de l'état de vos
CheckBox dans un fichier .ini, alors faites en la lecture, puis appliquez l'état de chaque éléments à votre GUI. Lorsque vous quittez votre script enregistrez l'état des
CheckBox dans le fichier .ini comme cela à la prochaine ouverture de votre script, la configuration sera la même ...
Ceci est une simple question de bon sens.

Re: [..] CheckBox
Posté : sam. 06 mars 2010 11:27
par Mikaas
Disont que je n'ai que 1H voir 2H max par jours pour etre sur le pc le reste du temps je suis occupé irl.
Sachant que je ne connais pas encore les thermes exacte mes recherches sont souvent limitée

pourtant j'utilise la touche F1 dans autoit j'ai aussi tapé +Checkbox dans les recherche rien ne colle
Pour exemple :
Si je coche la checkbox 1 sur 5 dans mon ini il me mettra
si j'enregistre et quitte pas de souci il sera bien inscrit comme cela dans le ini
si jouvre de nouveau le script les checkbox sont vide (meme celle coché auparavant) si j'enregistre et quitte sans les coché il va m'ecraser le ini par 0 sur les 5 lignes. hors si je fais lire le ini puis cocher par defaut a l'ouverture je n'aurai pas a coché de nouveau les checkbox, juste les décocher si je désire désactiver les options.
vers quels recherches dois je m'orienter ?
Re: [..] CheckBox
Posté : sam. 06 mars 2010 11:29
par Tlem
Mikaas a écrit :si jouvre de nouveau le script les checkbox sont vide (meme celle coché auparavant)
C'est pour cela, que je vous ai conseillé de faire une fonction qui lit le fichier .ini et qui applique les valeurs lors du dernier enregistrement.
Ensuite, je vous ai dit qu'il est inutile de contrôler la valeur de la
CheckBox, car si vous devez le faire :
1 - Lecture de l'état de la
CheckBox.
2 - Lecture de la valeur du fichier .ini.
3 - Si
CheckBox pas coché et valeur .ini = 1 alors on coche sinon on ne fait rien.
cela revient strictement à la même chose que :
1 - Lecture de la valeur du fichier .ini.
2 - Application de la valeur (quel que soit l'état précédent).
Re: [..] CheckBox
Posté : sam. 06 mars 2010 11:47
par Mikaas
Tlem a écrit :C'est pour cela, que je vous ai conseillé de faire une fonction qui lit le fichier .ini et qui applique les valeurs lors du dernier enregistrement.
Oui c'est se que j'essai de faire mais sans résultat
j'ai testé ceci, ca ma l'air pourtant un bon terme
► Afficher le texte
Code : Tout sélectionner
#RequireAdmin
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("MustDeclareVars", 1)
Opt("GUIOnEventMode", 1)
Global $check1, $msg, $check2, $check3, $TERMINER, $TON_INI, $VUE1, $VUE2, $VUE3
GUICreate("My GUI Checkbox")
$check1 = GUICtrlCreateCheckbox("CHECKBOX 1", 10, 10, 120, 20)
$VUE1 = IniRead("test.ini", "settings", "1", 0)
$check2 = GUICtrlCreateCheckbox("CHECKBOX 2", 10, 40, 120, 20)
$VUE2 = IniRead("test.ini", "settings", "2", 0)
$check3 = GUICtrlCreateCheckbox("CHECKBOX 3", 10, 70, 120, 20)
$VUE3 = IniRead("test.ini", "settings", "3", 0)
$TERMINER = GUICtrlCreateButton("TERMINER", 10, 150, 75, 25, $WS_GROUP)
GUICtrlSetOnEvent(-1, "TERM")
GUISetOnEvent($GUI_EVENT_CLOSE, "QUITTER")
GUISetState(@SW_SHOW)
action()
Func TERM()
If _IsChecked($check1) Then
IniWrite("test.ini", "SETTING", "1", " 1")
Else
IniWrite("test.ini", "SETTING", "1", " 0")
EndIf
If _IsChecked($check2) Then
IniWrite("test.ini", "SETTING", "2", " 1")
Else
IniWrite("test.ini", "SETTING", "2", " 0")
EndIf
EndFunc
Func action()
If $VUE1 = 1 Then
GUICtrlSetState($check1, $GUI_CHECKED)
EndIf
If $VUE2 = 1 Then
GUICtrlSetState($check2, $GUI_CHECKED)
EndIf
If $VUE3 = 1 Then
GUICtrlSetState($check3, $GUI_CHECKED)
EndIf
EndFunc
Func _IsChecked($control)
Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED
EndFunc
Func QUITTER()
Exit 0
EndFunc
While 1
Sleep(10)
WEnd
Re: [..] CheckBox
Posté : sam. 06 mars 2010 12:08
par Sparkdaemon
Petite parenthèse...
Tlem a écrit :Edit : Coiffé sue le poteau par sparky.
Sparky?

On me l'as jamais faite
Désolé du Hors-sujet ^^
Re: [..] CheckBox
Posté : sam. 06 mars 2010 12:59
par Mikaas
J'ai trouvé !!
j'ai transformé la phrase autoit en français (enfin en terme) et j'ai trouvé la solution !
merci
promis pour le prochaine question je cherche plus longtemps ( enfin pas 10h non plus

)
Edit : Par contre j'ai environs 70 checkbox ca va me faire un code long
ya pas plus cours que celui ci ?
► Afficher le texte
Code : Tout sélectionner
#RequireAdmin
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("MustDeclareVars", 1)
Opt("GUIOnEventMode", 1)
Global $check1, $msg, $check2, $TERMINER, $TON_INI, $VUE1, $VUE2, $VUE3
Global $VUE1 = IniRead("TEST.ini", "SETTING", "1", 0)
Global $VUE2 = IniRead("TEST.ini", "SETTING", "2", 0)
GUICreate("MA GUI")
If $VUE1 = 1 Then
$check1 = GUICtrlCreateCheckbox("CHECKBOX 1", 10, 10, 120, 20)
GUICtrlSetState($check1, $GUI_CHECKED)
Else
$check1 = GUICtrlCreateCheckbox("CHECKBOX 1", 10, 10, 120, 20)
GUICtrlSetState($check1, $GUI_UNCHECKED)
EndIf
If $VUE2 = 1 Then
$check2 = GUICtrlCreateCheckbox("CHECKBOX 2", 10, 40, 120, 20)
GUICtrlSetState($check2, $GUI_CHECKED)
Else
$check2 = GUICtrlCreateCheckbox("CHECKBOX 2", 10, 40, 120, 20)
GUICtrlSetState($check2, $GUI_UNCHECKED)
EndIf
$TERMINER = GUICtrlCreateButton("TERMINER", 10, 150, 75, 25, $WS_GROUP)
GUICtrlSetOnEvent(-1, "TERM")
GUISetOnEvent($GUI_EVENT_CLOSE, "QUITTER")
Func TERM()
If _IsChecked($check1) Then
IniWrite("test.ini", "SETTING", "1", " 1")
Else
IniWrite("test.ini", "SETTING", "1", " 0")
EndIf
If _IsChecked($check2) Then
IniWrite("test.ini", "SETTING", "2", " 1")
Else
IniWrite("test.ini", "SETTING", "2", " 0")
EndIf
Exit
EndFunc
Func _IsChecked($control)
Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED
EndFunc
Func QUITTER()
Exit 0
EndFunc
GUISetState(@SW_SHOW)
While 1
Sleep(10)
WEnd
Re: [R] CheckBox
Posté : sam. 06 mars 2010 13:26
par Tlem
Cela dépend de ce que vous entendez par 10h ...
Si c'est 1 minute par heure pendant 10 heures cela ne fait que 10 minutes.
@Sparkdaemon
Sparky est plus court que Sparkdaemon ...

HS
Re: [R] CheckBox
Posté : sam. 06 mars 2010 13:32
par Mikaas
Là j'étais sur le problème depuis l'heure du premier post je cherchais sur le web et le forum le temps d'avoir une réponse mais vu que je ne connais pas trés bien l'appelation de certains terme j'ai un peu de mal de trouver une bonne recherche
PS : j'ai une petite edit sur le post du dessus au niveau de la longueur du code

n'y aurai til pas un autre moyen connu ? car 70 checkbox ça rallonge le code grandement

Re: [R] CheckBox
Posté : sam. 06 mars 2010 13:37
par Tlem
Effectivement, 70
CheckBox, ca commence à faire.
Cette fois-ci, mon conseil sera d'utiliser une boucle pour la lecture/écriture du fichier .ini et de l'état des
CheckBox.
Le mieux sera de créer vos
CheckBox avec comme valeur un truc du genre :
Code : Tout sélectionner
$check1 = GUICtrlCreateCheckbox("CHECKBOX 1", 10, 10, 120, 20)
$check2 = GUICtrlCreateCheckbox("CHECKBOX 2", 10, 30, 120, 20)
$check3 = GUICtrlCreateCheckbox("CHECKBOX 3", 10, 50, 120, 20)
Ensuite une boucle de lecture/écriture de l'état des
CheckBox avec l'utilisation de la commande
Eval()
Idem pour la lecture/écriture dans votre fichier .ini.
Le mieux sera d'utiliser l'ID du contrôle (check1, check2, check3, ...)
Vous-vous lancez là dans quelque chose d'un petit peut complexe, donc prenez votre temps avant de poser des questions.
Et si vous recherchez un peux sur le forum, il me semble bien que quelque chose de similaire à été fait.

Re: [R] CheckBox
Posté : sam. 06 mars 2010 13:50
par Sparkdaemon
Tu peut aussi utiliser :
Et tu crées tes checkbox par rapport au numéro

Sachant que la premiere checkbox sera $checkbox[0] et la derniere $Checkbox[69]