Jump to content

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


Fangster
 Share

Recommended Posts

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

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

  • Moderators

@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

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

 

Link to comment
Share on other sites

  • Moderators

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

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

 

Link to comment
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
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...