Jump to content
Sign in to follow this  
Fangster

Show or hide an input box dynamically based on what is selected from a combo box

Recommended Posts

Fangster

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

Share this post


Link to post
Share on other sites
Andreik

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

Share this post


Link to post
Share on other sites
Melba23

@Fangster,

Try this:

#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 by Melba23

Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind._______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

 

Share this post


Link to post
Share on other sites
Fangster

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.

Share this post


Link to post
Share on other sites
AoRaToS

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.8.8 [30/09/2015]

Download Here

s!mpL3

Share this post


Link to post
Share on other sites
Melba23

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._______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

 

Share this post


Link to post
Share on other sites
AoRaToS

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.8.8 [30/09/2015]

Download Here

s!mpL3

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

×