lgwapnitsky Posted March 15, 2010 Share Posted March 15, 2010 I am creating a utility for my company that reads in a list of servers from a text file and generates checkboxes based on that information. I would like to select particular servers in which to apply information, but am unsure of how to read multiple checkboxes in a variable size array. I've attached my code for review, and am very happy to answer any questions that can clear possible confusion. Regards, Larry expandcollapse popupFunc _Main() ReadINI() GuiCreate("File Copier", 800, 300) $SelectFilesButton = GUICtrlCreateButton("Select File(s)", 15, 250, 115, 30) $RemoveFilesButton = GUICtrlCreateButton("Remove Selection(s)", 140, 250, 115, 30) $CopyFilesButton = GUICtrlCreateButton("Copy File(s)", 265, 250, 115, 30) GUICtrlCreateLabel("Selected Files",50,15) $FileList = GUICtrlCreateList("", 50, 35, 300,200, BitOr($LBS_EXTENDEDSEL, $WS_VSCROLL, $WS_HSCROLL)) $numBox[0] = GUICtrlCreateCheckbox("Select All", 450, 30, 100, 30) $newRow = 0 $yLoc = 20 $yLocInc = 40 for $i = 0 to UBOUND($arrDestinations) - 1 if Mod($newRow, 3) = 0 then $yLoc = $yLoc + $yLocInc EndIf $checkbox = GUICtrlCreateCheckbox($arrDestinations[$i], 450 + (100 * Mod($i, 3)), $yLoc, 100, 50);, $BS_AUTO3STATE) _ArrayAdd($numBox, $checkbox) $newRow += 1 next GUISetState() While 1 $GUIAction = GuiGetMsg() Switch $GUIAction Case $GUI_EVENT_CLOSE ExitLoop ; closes the GUI Case $SelectFilesButton _GUICtrlButton_Enable($SelectFilesButton, False) SelectFiles() _GUICtrlButton_Enable($SelectFilesButton) Case $RemoveFilesButton RemoveFiles() Case $CopyFilesButton CopyFiles() ; Case $numBox[0] ; Select ; Case (_GUICtrlButton_GetCheck($numBox[0]) = 1) ; for $i = 1 to UBOUND($arrDestinations) ; GUICtrlSetState($numbox[$i], ($GUI_CHECKED + $GUI_DISABLE)) ; next ; Case (_GUICtrlButton_GetCheck($numBox[0]) = 0) ; for $i = 1 to UBOUND($arrDestinations) ; GUICtrlSetState($numbox[$i], ($GUI_UNCHECKED + $GUI_ENABLE)) ; next ; EndSelect EndSwitch WEnd EndFunc Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted March 15, 2010 Moderators Share Posted March 15, 2010 lgwapnitsky,A few changes to the script:1. Presize the array depending on how many items you have read into the $arrDestinations array.2. Presize the GUI to fit all the checkboxes.3. Use the built-in GUICtrlSetState rather than _GUICtrlButton_Enable.4. Use GUICtrlRead in both basic and advanced forms to get the check state and text for the checkboxes.Look for the <<<<<<<<<<<<<<<<<<< lines:expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <ListBoxConstants.au3> #include <File.au3> #include <Array.au3> _Main() Func _Main() $newRow = 0 $yLoc = 20 $yLocInc = 40 ;ReadINI() $arrDestinations = _FileListToArray("M:\Program\Au3 Scripts", "*", 2) ; Simulate reading in data ; Size array Local $numbox[UBound($arrDestinations)] ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<< ; Determine GUI height $GUI_Height = $yLoc + $yLocInc * (2 + Int(UBound($arrDestinations) / 3)) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< GUICreate("File Copier", 800, $GUI_Height) $SelectFilesButton = GUICtrlCreateButton("Select File(s)", 15, 250, 115, 30) $RemoveFilesButton = GUICtrlCreateButton("Remove Selection(s)", 140, 250, 115, 30) $CopyFilesButton = GUICtrlCreateButton("Copy File(s)", 265, 250, 115, 30) GUICtrlCreateLabel("Selected Files", 50, 15) $FileList = GUICtrlCreateList("", 50, 35, 300, 200, BitOR($LBS_EXTENDEDSEL, $WS_VSCROLL, $WS_HSCROLL)) $numbox[0] = GUICtrlCreateCheckbox("Select All", 450, 30, 100, 30) For $i = 1 To UBound($arrDestinations) - 1 If Mod($newRow, 3) = 0 Then $yLoc = $yLoc + $yLocInc EndIf ; Save checkbox COntrolIDs $numbox[$i] = GUICtrlCreateCheckbox($arrDestinations[$i], 450 + (100 * Mod($i, 3)), $yLoc, 100, 50);, $BS_AUTO3STATE) ;_ArrayAdd($numbox, $checkbox) $newRow += 1 Next _ArrayDisplay($numbox) GUISetState() While 1 $GUIAction = GUIGetMsg() Switch $GUIAction Case $GUI_EVENT_CLOSE ExitLoop ; closes the GUI Case $SelectFilesButton GUICtrlSetState($SelectFilesButton, $GUI_DISABLE) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<< ;SelectFiles() GUICtrlSetState($SelectFilesButton, $GUI_ENABLE) ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<< Case $RemoveFilesButton ;RemoveFiles() Case $CopyFilesButton ;CopyFiles() ; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< For $i = 0 To UBound($numbox) - 1 ; Read check state If GUICtrlRead($numbox[$i]) = 1 Then ; Read text MsgBox(0, GUICtrlRead($numbox[$i], 1), "Checked") Else MsgBox(0, GUICtrlRead($numbox[$i], 1), "Unchecked") EndIf Next ; Case $numBox[0] ; Select ; Case (_GUICtrlButton_GetCheck($numBox[0]) = 1) ; for $i = 1 to UBOUND($arrDestinations) ; GUICtrlSetState($numbox[$i], ($GUI_CHECKED + $GUI_DISABLE)) ; next ; Case (_GUICtrlButton_GetCheck($numBox[0]) = 0) ; for $i = 1 to UBOUND($arrDestinations) ; GUICtrlSetState($numbox[$i], ($GUI_UNCHECKED + $GUI_ENABLE)) ; next ; EndSelect EndSwitch WEnd EndFunc ;==>_MainPlease ask if anything is unclear. M23P.S. It greatly increases your chances of getting a helpful reply if you post code which runs and does not need a great deal of added code to even get the GUI to appear or to replace missing functions. 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 columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now