Fangster Posted January 9, 2009 Share Posted January 9, 2009 I want to show or hide an input box dynamically based on what is selected from a combo box, not from a click of a button. Is this possible? For example, "Static" is the default and all 3 input boxes will show. If I select "PPPoE", then only input box 1 and 2 are displayed. If I select "DHCP", then no boxes should show. Then if I select "Static" again, all 3 input boxes are displayed again, ready for input. I want input boxes to show based on what is selected in the combo boxes, not by pressing any buttons. I will use a button later to process what is entered in the boxes. #include <GUIConstantsEx.au3> Opt('MustDeclareVars', 1) Example() Func Example() Local $msg, $input1, $input2, $input3 GUICreate("My GUI combo") ; will create a dialog box that when displayed is centered GUICtrlCreateCombo("DHCP", 10, 10); create first item GUICtrlSetData(-1, "PPPoE|Static", "Static"); add other item snd set a new default $input1 = GUICtrlCreateInput ("",10,35,200,20) $input2 = GUICtrlCreateInput ("",10,65,200,20) $input3 = GUICtrlCreateInput ("",10,95,200,20) GUISetState() ; Run the GUI until the dialog is closed While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop WEnd EndFunc ;==>Example Link to comment Share on other sites More sharing options...
Andreik Posted January 9, 2009 Share Posted January 9, 2009 I want to show or hide an input box dynamically based on what is selected from a combo box, not from a click of a button. Is this possible? For example, "Static" is the default and all 3 input boxes will show. If I select "PPPoE", then only input box 1 and 2 are displayed. If I select "DHCP", then no boxes should show. Then if I select "Static" again, all 3 input boxes are displayed again, ready for input. I want input boxes to show based on what is selected in the combo boxes, not by pressing any buttons. I will use a button later to process what is entered in the boxes. #include <GUIConstantsEx.au3> Opt('MustDeclareVars', 1) Example() Func Example() Local $msg, $input1, $input2, $input3 GUICreate("My GUI combo"); will create a dialog box that when displayed is centered GUICtrlCreateCombo("DHCP", 10, 10); create first item GUICtrlSetData(-1, "PPPoE|Static", "Static"); add other item snd set a new default $input1 = GUICtrlCreateInput ("",10,35,200,20) $input2 = GUICtrlCreateInput ("",10,65,200,20) $input3 = GUICtrlCreateInput ("",10,95,200,20) GUISetState() ; Run the GUI until the dialog is closed While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop WEnd EndFunc ;==>Example Use GuiCtrlRead() to read your combo. When the words fail... music speaks. Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted January 9, 2009 Moderators Share Posted January 9, 2009 (edited) @Fangster, Try this:expandcollapse popup#include <GUIConstantsEx.au3> Opt('MustDeclareVars', 1) Example() Func Example() Local $msg, $hCombo, $input1, $input2, $input3, $iState GUICreate("My GUI combo"); will create a dialog box that when displayed is centered $hCombo = GUICtrlCreateCombo("DHCP", 10, 10); create first item GUICtrlSetData(-1, "PPPoE|Static", "Static"); add other item snd set a new default $input1 = GUICtrlCreateInput ("",10,35,200,20) $input2 = GUICtrlCreateInput ("",10,65,200,20) $input3 = GUICtrlCreateInput ("",10,95,200,20) GUISetState() $iState = 0 ; Run the GUI until the dialog is closed While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop ; Interaction combo and inputs If GUICtrlRead($hCombo) = "DHCP" And $iState <> 2 Then $iState = 2 GUICtrlSetState($input1, $GUI_HIDE) GUICtrlSetState($input2, $GUI_HIDE) GUICtrlSetState($input3, $GUI_HIDE) ElseIf GUICtrlRead($hCombo) = "PPPoE" And $iState <> 1 Then $iState = 1 GUICtrlSetState($input1, $GUI_SHOW) GUICtrlSetState($input2, $GUI_SHOW) GUICtrlSetState($input3, $GUI_HIDE) ElseIf GUICtrlRead($hCombo) = "Static" And $iState <> 0 Then $iState = 0 GUICtrlSetState($input1, $GUI_SHOW) GUICtrlSetState($input2, $GUI_SHOW) GUICtrlSetState($input3, $GUI_SHOW) EndIf WEnd EndFunc;==>Example The State is needed to prevent flickering as the inputs are actioned on every loop. M23 Edited, but Fangster caught it before I did! Edited January 9, 2009 by Melba23 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...
Fangster Posted January 9, 2009 Author Share Posted January 9, 2009 Thanks for the input Andreik and Melba23. Melba23, you code works great. I just had to edit the list of variables to show $input3 because you had $input2 two times. Link to comment Share on other sites More sharing options...
AoRaToS Posted January 11, 2009 Share Posted January 11, 2009 I want to do the same thing but my GUI has 2 combos, each one of them is o a separate tab, how will I know the state? s!mpL3 LAN Messenger Current version 2.9.9.1 [04/07/2019] s!mpL3 LAN Messenger.zip s!mpL3 Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted January 11, 2009 Moderators Share Posted January 11, 2009 AoRaToS, I do not believe that should pose a problem. You only need the ID to read a control, not have it visible. Have you tried? M23 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...
AoRaToS Posted January 11, 2009 Share Posted January 11, 2009 Yes I did it, it works great, how would that go for a checkbox? check -> enable button. uncheck -> disable button. s!mpL3 LAN Messenger Current version 2.9.9.1 [04/07/2019] s!mpL3 LAN Messenger.zip s!mpL3 Link to comment Share on other sites More sharing options...
Valuater Posted January 11, 2009 Share Posted January 11, 2009 Maybe... If _IsChecked($control) Then ;do something Func _IsChecked($control) Return BitAnd(GUICtrlRead($control),$GUI_CHECKED) = $GUI_CHECKED EndFunc 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