Jump to content

Recommended Posts

Posted

Im doing a small gui that has checkboxes and i want it to write to an ini file if the box state is changed so i came up with this

While 1
        Switch GUIGetMsg()
            Case $GUI_EVENT_CLOSE
                Exit
            Case $Button_1
                    ; Stuff to add here
            Case $MainCheckbox1
                If GUICtrlRead($MainCheckbox1) <> '' Then
                    Local $CheckTest1 = GUICtrlGetState($MainCheckbox1)
                    ConsoleWrite($CheckTest1 & @CRLF) ; 80 ?
                    If $CheckTest1 = 1 Then
                        IniWrite(@ScriptDir & "\settings.ini", "gui", "g1", "1")
                    ElseIf $CheckTest1 = 0 Then
                        IniWrite(@ScriptDir & "\settings.ini", "gui", "g1", "0")
                    EndIf
                EndIf
        EndSwitch
    WEnd

but for some reason when i check the checkbox it returns 80 ? when i was expecting 1

and it gives the same number if i clear the checkbox

any suggestions plz?

ps ive been staring at this for a while now so it might just be code lag thats stopping me from seeing the obvious

  • Moderators
Posted

Chimaera,

Why are you using GUICtrlGetState? To check if a checkbox is checked/unchecked just use GUICtrlRead. The whole thing could be simplified to:

#include <GUIConstantsEx.au3>

$hGUI = GUICreate("Test", 500, 500)
$cMainCheckbox1 = GUICtrlCreateCheckbox("Test", 10, 10, 200, 20)
GUISetState()

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE
            Exit
        Case $cMainCheckbox1
            If GUICtrlRead($cMainCheckbox1) = 1 Then
                ConsoleWrite("Checked" & @CRLF)
                ;IniWrite(@ScriptDir & "\settings.ini", "gui", "g1", "1")
            Else
                ConsoleWrite("Unchecked" & @CRLF)
                ;IniWrite(@ScriptDir & "\settings.ini", "gui", "g1", "0")
            EndIf

    EndSwitch
WEnd

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Posted

You see i knew it was something daft im doing

Amended to this now

Case $MainCheckbox1
                If GUICtrlRead($MainCheckbox1) = $GUI_CHECKED Then
                    IniWrite(@ScriptDir & "\settings.ini", "gui", "g1", "1")
                Else
                    IniWrite(@ScriptDir & "\settings.ini", "gui", "g1", "0")
                EndIf

 

Posted (edited)

Should you write the state?  Such as:

If GUICtrlRead($MainCheckbox1) = $GUI_CHECKED Then
    IniWrite(@ScriptDir & "\settings.ini", "gui", "g1", $gui_checked)
Else
    IniWrite(@ScriptDir & "\settings.ini", "gui", "g1", $gui_unchecked)
EndIf

I've seen a read checkbox return 1 for checked and 4 for unchecked

Edited by Xandy
Posted

Just to add, variables inside loops should be declared outside, as this can affect performance of the script.

UDF List:

 
_AdapterConnections() • _AlwaysRun() • _AppMon() • _AppMonEx() • _ArrayFilter/_ArrayReduce • _BinaryBin() • _CheckMsgBox() • _CmdLineRaw() • _ContextMenu() • _ConvertLHWebColor()/_ConvertSHWebColor() • _DesktopDimensions() • _DisplayPassword() • _DotNet_Load()/_DotNet_Unload() • _Fibonacci() • _FileCompare() • _FileCompareContents() • _FileNameByHandle() • _FilePrefix/SRE() • _FindInFile() • _GetBackgroundColor()/_SetBackgroundColor() • _GetConrolID() • _GetCtrlClass() • _GetDirectoryFormat() • _GetDriveMediaType() • _GetFilename()/_GetFilenameExt() • _GetHardwareID() • _GetIP() • _GetIP_Country() • _GetOSLanguage() • _GetSavedSource() • _GetStringSize() • _GetSystemPaths() • _GetURLImage() • _GIFImage() • _GoogleWeather() • _GUICtrlCreateGroup() • _GUICtrlListBox_CreateArray() • _GUICtrlListView_CreateArray() • _GUICtrlListView_SaveCSV() • _GUICtrlListView_SaveHTML() • _GUICtrlListView_SaveTxt() • _GUICtrlListView_SaveXML() • _GUICtrlMenu_Recent() • _GUICtrlMenu_SetItemImage() • _GUICtrlTreeView_CreateArray() • _GUIDisable() • _GUIImageList_SetIconFromHandle() • _GUIRegisterMsg() • _GUISetIcon() • _Icon_Clear()/_Icon_Set() • _IdleTime() • _InetGet() • _InetGetGUI() • _InetGetProgress() • _IPDetails() • _IsFileOlder() • _IsGUID() • _IsHex() • _IsPalindrome() • _IsRegKey() • _IsStringRegExp() • _IsSystemDrive() • _IsUPX() • _IsValidType() • _IsWebColor() • _Language() • _Log() • _MicrosoftInternetConnectivity() • _MSDNDataType() • _PathFull/GetRelative/Split() • _PathSplitEx() • _PrintFromArray() • _ProgressSetMarquee() • _ReDim() • _RockPaperScissors()/_RockPaperScissorsLizardSpock() • _ScrollingCredits • _SelfDelete() • _SelfRename() • _SelfUpdate() • _SendTo() • _ShellAll() • _ShellFile() • _ShellFolder() • _SingletonHWID() • _SingletonPID() • _Startup() • _StringCompact() • _StringIsValid() • _StringRegExpMetaCharacters() • _StringReplaceWholeWord() • _StringStripChars() • _Temperature() • _TrialPeriod() • _UKToUSDate()/_USToUKDate() • _WinAPI_Create_CTL_CODE() • _WinAPI_CreateGUID() • _WMIDateStringToDate()/_DateToWMIDateString() • Au3 script parsing • AutoIt Search • AutoIt3 Portable • AutoIt3WrapperToPragma • AutoItWinGetTitle()/AutoItWinSetTitle() • Coding • DirToHTML5 • FileInstallr • FileReadLastChars() • GeoIP database • GUI - Only Close Button • GUI Examples • GUICtrlDeleteImage() • GUICtrlGetBkColor() • GUICtrlGetStyle() • GUIEvents • GUIGetBkColor() • Int_Parse() & Int_TryParse() • IsISBN() • LockFile() • Mapping CtrlIDs • OOP in AutoIt • ParseHeadersToSciTE() • PasswordValid • PasteBin • Posts Per Day • PreExpand • Protect Globals • Queue() • Resource Update • ResourcesEx • SciTE Jump • Settings INI • SHELLHOOK • Shunting-Yard • Signature Creator • Stack() • Stopwatch() • StringAddLF()/StringStripLF() • StringEOLToCRLF() • VSCROLL • WM_COPYDATA • More Examples...

Updated: 22/04/2018

Posted

@guinness thx i was aware and this was rough whilst i was working on it, i added the local to save making the global whilst i was tweaking and it was driving me nuts warning me as i always use

#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w- 7

Thx for the help all

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...