Jump to content
amphoric

Allow Edit Checkbox / Radio Button that shows other buttons

Recommended Posts

amphoric

Good Morning,

I hope someone can help, below is a stripped down version of my current .au3 file and there is a few bits I just cant for the life of me get to work;

1. I would like the 'Allow Edit' checkbox once checked to allow the user to edit the contents of the 'AD Group Name' input box

2. I would like the 'Other / Internal Use' radio button if checked to show the '$OtherInternalGroup' group of radio buttons

My current code.....

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIShellEx.au3>
#include <FileConstants.au3>
#include <WinAPIFiles.au3>
#include <WinAPI.au3> ; used for Lo/Hi word




; Declare Global variables for WM_COMMAND and '_GetAppName()' function.
Global $__iComboWrite = 9999, $__iInputValue = 9999, $__iInputWrite = 9999


#Region ### START GUI section ###
$Form1_1 = GUICreate("Packaging Wrapper", 435, 545, -1, -1)
GUISetIcon("C.ico", -1)
GUISetBkColor(0xFFFFFF)
Global $ApplicationNameInput = GUICtrlCreateInput("", 24, 168, 385, 21)
GUICtrlSetTip(-1, "EG: Corel_WinZip_21.0_0.1")
$ADGroupNameInput = GUICtrlCreateInput("", 24, 224, 385, 21)
$AllowEditChk = GUICtrlCreateCheckbox("Allow Edit", 344, 200, 65, 17, BitOR($GUI_SS_DEFAULT_CHECKBOX,$BS_RIGHT))
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ApplicationTypeGroup = GUICtrlCreateGroup("", 24, 272, 185, 113)
$CatalogueAppChk = GUICtrlCreateRadio("Catalogue Application", 32, 288, 137, 17)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$NonCatalogueAppChk = GUICtrlCreateRadio("Non-Catalogue Application", 32, 320, 161, 17)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$OtherAppChk = GUICtrlCreateRadio("Other / Internal Use", 32, 352, 137, 17)
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUICtrlCreateGroup("", -99, -99, 1, 1)
; $OtherInternalGroup = GUICtrlCreateGroup("", 216, 272, 193, 113)
$OSCoreApplicationChk = GUICtrlCreateRadio("OS Core Application", 224, 288, 129, 17)
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$InternalOnlyChk = GUICtrlCreateRadio("Internal ONLY Application", 224, 320, 161, 17)
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$OtherInternalLabel = GUICtrlCreateLabel("Other / Internal Use", 216, 256, 118, 17, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ConfirmGroup = GUICtrlCreateGroup("", 24, 392, 385, 89)
$Confirm = GUICtrlCreateCheckbox("I confirm all details are correct, and I wish to proceed", 48, 456, 329, 17, BitOR($GUI_SS_DEFAULT_CHECKBOX, $BS_CENTER))
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ConfirmDesc = GUICtrlCreateEdit("", 32, 408, 361, 41, 0, 0)
GUICtrlSetData(-1, StringFormat("Please confirm that all entered information is correct, and the you wish to \r\nproceed with the creation of the " & Chr(39) & "Application Toolkit Wrapper" & Chr(39) & "."))
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$ProceedBtn = GUICtrlCreateButton("Proceed", 128, 488, 75, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x008000)
$CancelBtn = GUICtrlCreateButton("Cancel", 240, 488, 75, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
$CapitaLogo = GUICtrlCreatePic("Logo.jpg", 24, 8, 159, 33)
$PackagingWrapperLabel = GUICtrlCreateLabel("Packaging Wrapper", 224, 8, 187, 28)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
$CreatedByLabel = GUICtrlCreateLabel("...", 16, 528, 405, 15, $SS_CENTER)
GUICtrlSetFont(-1, 7, 400, 0, "MS Serif")
$VerLabel = GUICtrlCreateLabel("Ver. 1.0 ALPHA", 328, 40, 79, 17)
$Step1Label = GUICtrlCreateLabel("Please Enter The Following Information", 24, 80, 274, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000080)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$Graphic3 = GUICtrlCreateGraphic(16, 72, 404, 452, BitOR($GUI_SS_DEFAULT_GRAPHIC, $SS_SIMPLE))
GUICtrlSetColor(-1, 0xE3E3E3)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ApplicationNameDesc = GUICtrlCreateEdit("", 24, 128, 393, 33, 0, 0)
GUICtrlSetData(-1, StringFormat("Must be in the following format: Manufacturer_AppName_AppVersion_Rev\r\nEG: Corel_WinZip_21.0_01"))
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ADGroupNameLabel = GUICtrlCreateLabel("AD Group Name", 24, 200, 95, 17, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ApplicationNameLabel = GUICtrlCreateLabel("Application Name", 24, 112, 103, 17, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ApplicationTypeLabel = GUICtrlCreateLabel("Application Type", 24, 256, 99, 17, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUISetState(@SW_SHOW)
#EndRegion ### END GUI section ###

;GLOBAL VARIABLES
Global $ApplicationName, $adstring1
Global $ADGroupName = $adstring1
Global $envSystemDrive = EnvGet("systemdrive")
Global $PackagingDirectory = "Packaging\???_Apps"
Global $FullDir = $envSystemDrive & "\" & $PackagingDirectory & "\" & $ApplicationName
Global $currentDate = @MDAY &"-"& @MON &"-"& @YEAR
Global $currentTime = @HOUR &":"& @MIN &":"& @SEC


; Register the WM_COMMAND to intercept when the value in the first input's value is changed.
    GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')


While 1
    $nMsg = GUIGetMsg()

    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit

        Case $CancelBtn
            Exit

        Case $ProceedBtn
            ;Check Application Name Validity
            $ApplicationNameInputValid = StringSplit(GUICtrlRead($ApplicationNameInput), "_")
            If $ApplicationNameInputValid[0]<> 4 Then
            ConsoleWrite("Application Name - NOT Valid" & @CRLF)
            $ApplicationNameInputValidYes = 0
            MsgBox(0,"Are The Details Correct?", "Application Name NOT Valid.")
            GUICtrlSetState($ApplicationNameInput,$GUI_FOCUS)
            Elseif $ApplicationNameInputValid[0]= 4 Then
            ConsoleWrite("Application Name - Valid" & @CRLF)
            $ApplicationNameInputValidYes = 1
            EndIf

            ;Is Confirm Checkbox 'Checked'
            if GUICtrlRead($Confirm) = $GUI_CHECKED Then
                ConsoleWrite("$Confirm - ticked" & @CRLF)
                $ConfirmYes = 1
            Else
                $ConfirmYes = 0
                ConsoleWrite("$Confirm - NOT ticked" & @CRLF)
                MsgBox(0,"Are The Details Correct?", "Please complete confirmation.")
            EndIf

            ;Is $CatalogueAppChk 'Checked'
            if GUICtrlRead($CatalogueAppChk) = $GUI_CHECKED Then
                ConsoleWrite("$CatalogueAppChk - ticked" & @CRLF)
                $CatalogueAppChkYes = 1
            Else
                ConsoleWrite("$CatalogueAppChk - NOT ticked" & @CRLF)
                $CatalogueAppChkYes = 0
            EndIf

            ;Is $NonCatalogueAppChk 'Checked'
            if GUICtrlRead($NonCatalogueAppChk) = $GUI_CHECKED Then
                ConsoleWrite("$NonCatalogueAppChk -  ticked" & @CRLF)
                $NonCatalogueAppChkYes = 1
            Else
                ConsoleWrite("$NonCatalogueAppChk - NOT ticked" & @CRLF)
                $NonCatalogueAppChkYes = 0
            EndIf

            ;Is $OtherAppChk 'Checked'
            if GUICtrlRead($OtherAppChk) = $GUI_CHECKED Then
                ConsoleWrite("$OtherAppChk - ticked" & @CRLF)
                $OtherAppChkYes = 1
            Else
                ConsoleWrite("$OtherAppChk - NOT ticked" & @CRLF)
                $OtherAppChkYes = 0
            EndIf






 ConsoleWrite(@CRLF & "##### COMPLETED #####" & @CRLF)
    EndSwitch

WEnd

;Check for 'Application Name' update
Func _GetAppName()
    $adString = StringReplace(GUICtrlRead($ApplicationNameInput), "_", " ",2)
    $adstrings = StringSplit($adString, "_")
    Global $adString1 = $adstrings[1]
    Global $ApplicationName = GUICtrlRead($ApplicationNameInput)
        GUICtrlSetData($ADGroupNameInput, $adstring1)
EndFunc


;WM_COMMAND Function used for Auto Input of fields
Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
    #forceref $hWnd, $iMsg, $lParam

    Local $iHiWord = _WinAPI_HiWord($wParam) ; Control identification code.
    Local $iLoWord = _WinAPI_LoWord($wParam) ; Control identifier.
    Switch $iHiWord
        Case $EN_CHANGE ; When a change event is intercepted.
            Switch $iLoWord ; Retrieve the controlid.
                Case _GetAppName() ; If it matches the first input then call the custom function _GetInput.
                    ConsoleWrite("Debug: value was changed." & @CRLF)
                    _GetAppName()
            EndSwitch
    EndSwitch
    Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND

I hope all this makes sense.

Thanks in advance :)

Share this post


Link to post
Share on other sites
Subz

Something like this maybe:

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIShellEx.au3>
#include <FileConstants.au3>
#include <WinAPIFiles.au3>
#include <WinAPI.au3> ; used for Lo/Hi word

; Declare Global variables for WM_COMMAND and '_GetAppName()' function.
Global $__iComboWrite = 9999, $__iInputValue = 9999, $__iInputWrite = 9999
Global $bOtherInternalGroup = False

#Region ### START GUI section ###
$Form1_1 = GUICreate("Packaging Wrapper", 435, 545, -1, -1)
GUISetIcon("C.ico", -1)
GUISetBkColor(0xFFFFFF)
Global $ApplicationNameInput = GUICtrlCreateInput("", 24, 168, 385, 21)
GUICtrlSetTip(-1, "EG: Corel_WinZip_21.0_0.1")
$ADGroupNameInput = GUICtrlCreateInput("", 24, 224, 385, 21)
GUICtrlSetState($ADGroupNameInput, $GUI_DISABLE)
$AllowEditChk = GUICtrlCreateCheckbox("Allow Edit", 344, 200, 65, 17, BitOR($GUI_SS_DEFAULT_CHECKBOX,$BS_RIGHT))
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ApplicationTypeGroup = GUICtrlCreateGroup("", 24, 272, 185, 113)
$CatalogueAppChk = GUICtrlCreateRadio("Catalogue Application", 32, 288, 137, 17)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$NonCatalogueAppChk = GUICtrlCreateRadio("Non-Catalogue Application", 32, 320, 161, 17)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$OtherAppChk = GUICtrlCreateRadio("Other / Internal Use", 32, 352, 137, 17)
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUICtrlCreateGroup("", -99, -99, 1, 1)
; $OtherInternalGroup = GUICtrlCreateGroup("", 216, 272, 193, 113)
$OSCoreApplicationChk = GUICtrlCreateRadio("OS Core Application", 224, 288, 129, 17)
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$InternalOnlyChk = GUICtrlCreateRadio("Internal ONLY Application", 224, 320, 161, 17)
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$OtherInternalLabel = GUICtrlCreateLabel("Other / Internal Use", 216, 256, 118, 17, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetBkColor(-1, 0xE3E3E3)

$ConfirmGroup = GUICtrlCreateGroup("", 24, 392, 385, 89)
$Confirm = GUICtrlCreateCheckbox("I confirm all details are correct, and I wish to proceed", 48, 456, 329, 17, BitOR($GUI_SS_DEFAULT_CHECKBOX, $BS_CENTER))
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ConfirmDesc = GUICtrlCreateEdit("", 32, 408, 361, 41, 0, 0)
GUICtrlSetData(-1, StringFormat("Please confirm that all entered information is correct, and the you wish to \r\nproceed with the creation of the " & Chr(39) & "Application Toolkit Wrapper" & Chr(39) & "."))
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$ProceedBtn = GUICtrlCreateButton("Proceed", 128, 488, 75, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x008000)
$CancelBtn = GUICtrlCreateButton("Cancel", 240, 488, 75, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
$CapitaLogo = GUICtrlCreatePic("Logo.jpg", 24, 8, 159, 33)
$PackagingWrapperLabel = GUICtrlCreateLabel("Packaging Wrapper", 224, 8, 187, 28)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
$CreatedByLabel = GUICtrlCreateLabel("...", 16, 528, 405, 15, $SS_CENTER)
GUICtrlSetFont(-1, 7, 400, 0, "MS Serif")
$VerLabel = GUICtrlCreateLabel("Ver. 1.0 ALPHA", 328, 40, 79, 17)
$Step1Label = GUICtrlCreateLabel("Please Enter The Following Information", 24, 80, 274, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000080)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$Graphic3 = GUICtrlCreateGraphic(16, 72, 404, 452, BitOR($GUI_SS_DEFAULT_GRAPHIC, $SS_SIMPLE))
GUICtrlSetColor(-1, 0xE3E3E3)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ApplicationNameDesc = GUICtrlCreateEdit("", 24, 128, 393, 33, 0, 0)
GUICtrlSetData(-1, StringFormat("Must be in the following format: Manufacturer_AppName_AppVersion_Rev\r\nEG: Corel_WinZip_21.0_01"))
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ADGroupNameLabel = GUICtrlCreateLabel("AD Group Name", 24, 200, 95, 17, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ApplicationNameLabel = GUICtrlCreateLabel("Application Name", 24, 112, 103, 17, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ApplicationTypeLabel = GUICtrlCreateLabel("Application Type", 24, 256, 99, 17, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUISetState(@SW_SHOW)
#EndRegion ### END GUI section ###

;GLOBAL VARIABLES
Global $ApplicationName, $adstring1
Global $ADGroupName = $adstring1
Global $envSystemDrive = EnvGet("systemdrive")
Global $PackagingDirectory = "Packaging\???_Apps"
Global $FullDir = $envSystemDrive & "\" & $PackagingDirectory & "\" & $ApplicationName
Global $currentDate = @MDAY &"-"& @MON &"-"& @YEAR
Global $currentTime = @HOUR &":"& @MIN &":"& @SEC

AdlibRegister("_GetAppName")

While 1
    $nMsg = GUIGetMsg()
    If BitAND(GUICtrlRead($OtherAppChk), $GUI_CHECKED) = $GUI_CHECKED And $bOtherInternalGroup = False Then
        GUICtrlSetState($OSCoreApplicationChk, $GUI_SHOW)
        GUICtrlSetState($InternalOnlyChk, $GUI_SHOW)
        GUICtrlSetState($OtherInternalLabel, $GUI_SHOW)
        $bOtherInternalGroup = True
    ElseIf BitAND(GUICtrlRead($OtherAppChk), $GUI_UNCHECKED) = $GUI_UNCHECKED And $bOtherInternalGroup = True Then
        GUICtrlSetState($OSCoreApplicationChk, $GUI_HIDE)
        GUICtrlSetState($InternalOnlyChk, $GUI_HIDE)
        GUICtrlSetState($OtherInternalLabel, $GUI_HIDE)
        $bOtherInternalGroup = False
    EndIf
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $CancelBtn
            Exit
        Case $AllowEditChk
            If GUICtrlRead($AllowEditChk) = $GUI_CHECKED Then
                GUICtrlSetState($ADGroupNameInput, $GUI_ENABLE)
                AdlibUnRegister("_GetAppName")
            Else
                GUICtrlSetState($ADGroupNameInput, $GUI_DISABLE)
                AdlibRegister("_GetAppName")
            EndIf
        Case $ProceedBtn
            ;Check Application Name Validity
            $ApplicationNameInputValid = StringSplit(GUICtrlRead($ApplicationNameInput), "_")
            If $ApplicationNameInputValid[0]<> 4 Then
            ConsoleWrite("Application Name - NOT Valid" & @CRLF)
            $ApplicationNameInputValidYes = 0
            MsgBox(0,"Are The Details Correct?", "Application Name NOT Valid.")
            GUICtrlSetState($ApplicationNameInput,$GUI_FOCUS)
            Elseif $ApplicationNameInputValid[0]= 4 Then
            ConsoleWrite("Application Name - Valid" & @CRLF)
            $ApplicationNameInputValidYes = 1
            EndIf

            ;Is Confirm Checkbox 'Checked'
            if GUICtrlRead($Confirm) = $GUI_CHECKED Then
                ConsoleWrite("$Confirm - ticked" & @CRLF)
                $ConfirmYes = 1
            Else
                $ConfirmYes = 0
                ConsoleWrite("$Confirm - NOT ticked" & @CRLF)
                MsgBox(0,"Are The Details Correct?", "Please complete confirmation.")
            EndIf

            ;Is $CatalogueAppChk 'Checked'
            if GUICtrlRead($CatalogueAppChk) = $GUI_CHECKED Then
                ConsoleWrite("$CatalogueAppChk - ticked" & @CRLF)
                $CatalogueAppChkYes = 1
            Else
                ConsoleWrite("$CatalogueAppChk - NOT ticked" & @CRLF)
                $CatalogueAppChkYes = 0
            EndIf

            ;Is $NonCatalogueAppChk 'Checked'
            if GUICtrlRead($NonCatalogueAppChk) = $GUI_CHECKED Then
                ConsoleWrite("$NonCatalogueAppChk -  ticked" & @CRLF)
                $NonCatalogueAppChkYes = 1
            Else
                ConsoleWrite("$NonCatalogueAppChk - NOT ticked" & @CRLF)
                $NonCatalogueAppChkYes = 0
            EndIf

            ;Is $OtherAppChk 'Checked'
            if GUICtrlRead($OtherAppChk) = $GUI_CHECKED Then
                ConsoleWrite("$OtherAppChk - ticked" & @CRLF)
                $OtherAppChkYes = 1
            Else
                ConsoleWrite("$OtherAppChk - NOT ticked" & @CRLF)
                $OtherAppChkYes = 0
            EndIf

 ConsoleWrite(@CRLF & "##### COMPLETED #####" & @CRLF)
    EndSwitch

WEnd

;Check for 'Application Name' update
Func _GetAppName()
    $adString = StringReplace(GUICtrlRead($ApplicationNameInput), "_", " ",2)
    $adstrings = StringSplit($adString, "_")
    Global $adString1 = $adstrings[1]
    Global $ApplicationName = GUICtrlRead($ApplicationNameInput)
        GUICtrlSetData($ADGroupNameInput, $adstring1)
EndFunc

 

Edited by Subz

Share this post


Link to post
Share on other sites
amphoric

Hey Subz,

Yes like that!! Although this still doesn't allow the user to edit the contents of the input box... I haven't a clue how to make the radiobutton show the other radio buttons either :( 

 

Thanks

Share this post


Link to post
Share on other sites
Subz

Updated post above, I'm a little confused with regards to WM_COMMAND (which was stopping you from editing the input box), what were trying to do with this?

Share this post


Link to post
Share on other sites
amphoric

The wmcommand basically allows for the update of the AD Group box when entering the Application name. if you enter a application name it also populates the AD Group box stripping out the ' _ ' (Underscore) character.

 

Unfortunately this new code has stopped that functionality, it no longer auto populates the AD Group input box :(

Edited by amphoric
Update of information

Share this post


Link to post
Share on other sites
Subz

Have updated the post above, the WMCommand was being used incorrectly which is why I asked, I've now removed it and added AdLibRegister which uses the same _GetAppName function, when checking/unchecking "Allow Edit" this will enable/disable the _GetAppName function.  Hope that makes sense.

Share this post


Link to post
Share on other sites
amphoric

OMG SUBZ! You are my HERO!!!!!!

Thank you so much, you don't know how long I've been looking at trying to do this!

Can you please explain the changes and why they were required? I would like to learn how/where I went wrong

 

Thanks

Share this post


Link to post
Share on other sites
Subz

Have added a few comments to the code, changed function global declarations to local, shouldn't declare global variables within functions.  Anyway I hope it makes sense, sorry documentation isn't my forte :)

#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <MsgBoxConstants.au3>
#include <WinAPIShellEx.au3>
#include <FileConstants.au3>
#include <WinAPIFiles.au3>
#include <WinAPI.au3> ; used for Lo/Hi word

; Declare Global variables for WM_COMMAND and '_GetAppName()' function.
Global $__iComboWrite = 9999, $__iInputValue = 9999, $__iInputWrite = 9999
;~ Boolean to determine if changes to $bOtherInternalGroup has occurred
Global $bOtherInternalGroup = False

#Region ### START GUI section ###
$Form1_1 = GUICreate("Packaging Wrapper", 435, 545, -1, -1)
GUISetIcon("C.ico", -1)
GUISetBkColor(0xFFFFFF)
Global $ApplicationNameInput = GUICtrlCreateInput("", 24, 168, 385, 21)
GUICtrlSetTip(-1, "EG: Corel_WinZip_21.0_0.1")
$ADGroupNameInput = GUICtrlCreateInput("", 24, 224, 385, 21)
GUICtrlSetState($ADGroupNameInput, $GUI_DISABLE)
$AllowEditChk = GUICtrlCreateCheckbox("Allow Edit", 344, 200, 65, 17, BitOR($GUI_SS_DEFAULT_CHECKBOX,$BS_RIGHT))
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ApplicationTypeGroup = GUICtrlCreateGroup("", 24, 272, 185, 113)
$CatalogueAppChk = GUICtrlCreateRadio("Catalogue Application", 32, 288, 137, 17)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$NonCatalogueAppChk = GUICtrlCreateRadio("Non-Catalogue Application", 32, 320, 161, 17)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$OtherAppChk = GUICtrlCreateRadio("Other / Internal Use", 32, 352, 137, 17)
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUICtrlCreateGroup("", -99, -99, 1, 1)
; $OtherInternalGroup = GUICtrlCreateGroup("", 216, 272, 193, 113)
$OSCoreApplicationChk = GUICtrlCreateRadio("OS Core Application", 224, 288, 129, 17)
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$InternalOnlyChk = GUICtrlCreateRadio("Internal ONLY Application", 224, 320, 161, 17)
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$OtherInternalLabel = GUICtrlCreateLabel("Other / Internal Use", 216, 256, 118, 17, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetState(-1, $GUI_HIDE)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetBkColor(-1, 0xE3E3E3)

$ConfirmGroup = GUICtrlCreateGroup("", 24, 392, 385, 89)
$Confirm = GUICtrlCreateCheckbox("I confirm all details are correct, and I wish to proceed", 48, 456, 329, 17, BitOR($GUI_SS_DEFAULT_CHECKBOX, $BS_CENTER))
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ConfirmDesc = GUICtrlCreateEdit("", 32, 408, 361, 41, 0, 0)
GUICtrlSetData(-1, StringFormat("Please confirm that all entered information is correct, and the you wish to \r\nproceed with the creation of the " & Chr(39) & "Application Toolkit Wrapper" & Chr(39) & "."))
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUICtrlCreateGroup("", -99, -99, 1, 1)
$ProceedBtn = GUICtrlCreateButton("Proceed", 128, 488, 75, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x008000)
$CancelBtn = GUICtrlCreateButton("Cancel", 240, 488, 75, 25)
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0xFF0000)
$CapitaLogo = GUICtrlCreatePic("Logo.jpg", 24, 8, 159, 33)
$PackagingWrapperLabel = GUICtrlCreateLabel("Packaging Wrapper", 224, 8, 187, 28)
GUICtrlSetFont(-1, 14, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
$CreatedByLabel = GUICtrlCreateLabel("...", 16, 528, 405, 15, $SS_CENTER)
GUICtrlSetFont(-1, 7, 400, 0, "MS Serif")
$VerLabel = GUICtrlCreateLabel("Ver. 1.0 ALPHA", 328, 40, 79, 17)
$Step1Label = GUICtrlCreateLabel("Please Enter The Following Information", 24, 80, 274, 20, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetFont(-1, 10, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000080)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$Graphic3 = GUICtrlCreateGraphic(16, 72, 404, 452, BitOR($GUI_SS_DEFAULT_GRAPHIC, $SS_SIMPLE))
GUICtrlSetColor(-1, 0xE3E3E3)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ApplicationNameDesc = GUICtrlCreateEdit("", 24, 128, 393, 33, 0, 0)
GUICtrlSetData(-1, StringFormat("Must be in the following format: Manufacturer_AppName_AppVersion_Rev\r\nEG: Corel_WinZip_21.0_01"))
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ADGroupNameLabel = GUICtrlCreateLabel("AD Group Name", 24, 200, 95, 17, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ApplicationNameLabel = GUICtrlCreateLabel("Application Name", 24, 112, 103, 17, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetBkColor(-1, 0xE3E3E3)
$ApplicationTypeLabel = GUICtrlCreateLabel("Application Type", 24, 256, 99, 17, BitOR($SS_CENTER, $SS_CENTERIMAGE))
GUICtrlSetFont(-1, 8, 800, 0, "MS Sans Serif")
GUICtrlSetColor(-1, 0x000000)
GUICtrlSetBkColor(-1, 0xE3E3E3)
GUISetState(@SW_SHOW)
#EndRegion ### END GUI section ###

;GLOBAL VARIABLES
Global $ApplicationName, $adstring1
Global $ADGroupName = $adstring1
Global $envSystemDrive = EnvGet("systemdrive")
Global $PackagingDirectory = "Packaging\???_Apps"
Global $FullDir = $envSystemDrive & "\" & $PackagingDirectory & "\" & $ApplicationName
Global $currentDate = @MDAY &"-"& @MON &"-"& @YEAR
Global $currentTime = @HOUR &":"& @MIN &":"& @SEC

;~ Registers _GetAppName as an Adlib function, checks every 250ms (default)
AdlibRegister("_GetAppName")

While 1
    $nMsg = GUIGetMsg()
    ;~ Check if radio button ($OtherAppChk) is selected and hide/show hidden radio buttons
    ;~ Uses $bOtherInternalGroup (Boolean) to stop flickering
    If BitAND(GUICtrlRead($OtherAppChk), $GUI_CHECKED) = $GUI_CHECKED And $bOtherInternalGroup = False Then
        GUICtrlSetState($OSCoreApplicationChk, $GUI_SHOW)
        GUICtrlSetState($InternalOnlyChk, $GUI_SHOW)
        GUICtrlSetState($OtherInternalLabel, $GUI_SHOW)
        $bOtherInternalGroup = True
    ElseIf BitAND(GUICtrlRead($OtherAppChk), $GUI_UNCHECKED) = $GUI_UNCHECKED And $bOtherInternalGroup = True Then
        GUICtrlSetState($OSCoreApplicationChk, $GUI_HIDE)
        GUICtrlSetState($InternalOnlyChk, $GUI_HIDE)
        GUICtrlSetState($OtherInternalLabel, $GUI_HIDE)
        $bOtherInternalGroup = False
    EndIf
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $CancelBtn
            Exit
        Case $AllowEditChk
            ;~ Check if $AllowEditChk Checkbox is checked or not:
            ;~ Enables/Disabled $ADGroupNameInput
            ;~ Register/Unregister _GetAppName function
            If GUICtrlRead($AllowEditChk) = $GUI_CHECKED Then
                GUICtrlSetState($ADGroupNameInput, $GUI_ENABLE)
                AdlibUnRegister("_GetAppName")
            Else
                GUICtrlSetState($ADGroupNameInput, $GUI_DISABLE)
                AdlibRegister("_GetAppName")
            EndIf
        Case $ProceedBtn
            ;Check Application Name Validity
            $ApplicationNameInputValid = StringSplit(GUICtrlRead($ApplicationNameInput), "_")
            If $ApplicationNameInputValid[0]<> 4 Then
            ConsoleWrite("Application Name - NOT Valid" & @CRLF)
            $ApplicationNameInputValidYes = 0
            MsgBox(0,"Are The Details Correct?", "Application Name NOT Valid.")
            GUICtrlSetState($ApplicationNameInput,$GUI_FOCUS)
            Elseif $ApplicationNameInputValid[0]= 4 Then
            ConsoleWrite("Application Name - Valid" & @CRLF)
            $ApplicationNameInputValidYes = 1
            EndIf

            ;Is Confirm Checkbox 'Checked'
            if GUICtrlRead($Confirm) = $GUI_CHECKED Then
                ConsoleWrite("$Confirm - ticked" & @CRLF)
                $ConfirmYes = 1
            Else
                $ConfirmYes = 0
                ConsoleWrite("$Confirm - NOT ticked" & @CRLF)
                MsgBox(0,"Are The Details Correct?", "Please complete confirmation.")
            EndIf

            ;Is $CatalogueAppChk 'Checked'
            if GUICtrlRead($CatalogueAppChk) = $GUI_CHECKED Then
                ConsoleWrite("$CatalogueAppChk - ticked" & @CRLF)
                $CatalogueAppChkYes = 1
            Else
                ConsoleWrite("$CatalogueAppChk - NOT ticked" & @CRLF)
                $CatalogueAppChkYes = 0
            EndIf

            ;Is $NonCatalogueAppChk 'Checked'
            if GUICtrlRead($NonCatalogueAppChk) = $GUI_CHECKED Then
                ConsoleWrite("$NonCatalogueAppChk -  ticked" & @CRLF)
                $NonCatalogueAppChkYes = 1
            Else
                ConsoleWrite("$NonCatalogueAppChk - NOT ticked" & @CRLF)
                $NonCatalogueAppChkYes = 0
            EndIf

            ;Is $OtherAppChk 'Checked'
            if GUICtrlRead($OtherAppChk) = $GUI_CHECKED Then
                ConsoleWrite("$OtherAppChk - ticked" & @CRLF)
                $OtherAppChkYes = 1
            Else
                ConsoleWrite("$OtherAppChk - NOT ticked" & @CRLF)
                $OtherAppChkYes = 0
            EndIf

 ConsoleWrite(@CRLF & "##### COMPLETED #####" & @CRLF)
    EndSwitch

WEnd

;Check for 'Application Name' update
Func _GetAppName()
    Local  $adString = StringReplace(GUICtrlRead($ApplicationNameInput), "_", " ",2)
    Local $adstrings = StringSplit($adString, "_")
    Local $adString1 = $adstrings[1]
    Local $ApplicationName = GUICtrlRead($ApplicationNameInput)
        GUICtrlSetData($ADGroupNameInput, $adstring1)
EndFunc

 

Share this post


Link to post
Share on other sites
amphoric

That's perfect! Thanks again for your help

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

  • Similar Content

    • boomingranny
      By boomingranny
      ;****************************************************************** ;Spotify Automation: Start spotify and play a playlist ;v1.01 27/04/2018 ;------------------------------------------------------------------ ;by Daniel Barnes ;------------------------------------------------------------------ ;v1.01 27/04/2018 ;restarts spotify if it fails the first time ;works on computers that minimize Spotify to tray ;instead of closing it, and have a different ui element selected ;such as the Devices available option when spotify is started ;------------------------------------------------------------------ ;v1.00 25/04/2018 ;initial version ;------------------------------------------------------------------ ;Replace the below with the Spotify URI ;If you right click the playlist> share> copy spotify uri ;you can find the uri $spotifyURI = "spotify:user:12177300374:playlist:0iaTAvHRSaIkD23ofl2tck" ;****************************************************************** ;if this script breaks in the future, figure this out using the AutoIt Window Info Tool Const $SpotifyWindowIdentifier = "[Title:Spotify;Class:Chrome_WidgetWin_0]" ;NOTE ABOUT SHUFFLE: ;I couldn't automate turning shuffling on or off ;I can toggle it, but I cannot figure out the current state ;If you want to shuffle, turn on shuffle in Spotify prior ;to running this script PlaySpotifyPlaylist($spotifyURI) Func PlaySpotifyPlaylist($spotifyURI,$retry = 0) ;terminate spotify process on subsequent attempts If $retry Then echo ("Closing existing Spotify process") ProcessClose("Spotify.exe") endif echo ("Launching Spotify URI") ShellExecute($spotifyURI) ;Pause any existing song playing (if there is any) ;this is because Spotify's window title is only 'Spotify' when it is not playing any songs If Not WinExists($SpotifyWindowIdentifier) Then echo ("Pausing existing song (To find spotify window)") $timer = TimerInit() While Not WinExists($SpotifyWindowIdentifier) Send("{MEDIA_PLAY_PAUSE}") Sleep(500) If TimerDiff($timer) > 5 * 1000 Then ErrorMsg ("Timed out trying pause existing song") WEnd endif ;Get Spotify Window Handle $hwndSpotify = WinGetHandle($SpotifyWindowIdentifier) echo ("Attempting to play playlist") $timer = TimerInit() While WinGetTitle($hwndSpotify) = "Spotify" ;once it is playing the song, the title changes to the name of the song WinActivate($hwndSpotify) ControlSend($hwndSpotify,"","","{ENTER}") ;space will play what was previously playing (even another playlist or song), enter will play the playlist ;) Sleep(1000) If TimerDiff($timer) > 5 * 1000 Then If $retry Then ErrorMsg ("Timed out trying to play playlist") else Return PlaySpotifyPlaylist($spotifyURI,$retry+1) endif endif WEnd EndFunc Func echo($text) ConsoleWrite ($text&@CRLF) EndFunc Func ErrorMsg($text) MsgBox(16,StringTrimRight(@ScriptName,4),$text) Exit EndFunc  
    • TheSaint
      By TheSaint
      TeraCopy Timer - A program of mine, front end really, that I have been working on (on & off) for some time, but not shared here before, that I recall. Third party program TeraCopy is required.
      Many of you will be familiar with TeraCopy, and it has been discussed here at AF on several occasions, in various sub forums, including Chat.
      BE ADVISED - I still use an older version of TeraCopy (v2.27), a goody but an oldy, so have only tested my program with that. It may work with the newer v3.xx, or may be easily adjusted to do so, but I have not yet gone that route. Likewise, I only use it with Win 7 and Win XP, but I don't imagine there should be any issues with newer Windows. Add to that, my program being devised and created in AutoIt v3.3.0.0.
      So what is TeraCopy Timer and why might you need it?
      --------------------------------------------------------------------------------------
      Those familiar with TeraCopy use, know you can run multiple copy or move jobs either simultaneously or concurrently (one immediately after another has finished). With the free version at least, you have no control over precise order or timing, and no way to deal (without manual interaction) with the pesky Thumbs.db files in Win XP. TeraCopy Timer allows you to do all those things, and in a batch fashion.
      --------------------------------------------------------------------------------------
      Some screenshots and brief explanation
      Main Window
      Minimalist Window
      This new WAIT feature is the simplest and best way to use the program generally (in my view) ... but check out the following, as it is not always the case.
      Advanced Delay Window
      WARNING - It should go without saying, that you take all the usual precautions. For instance, don't use move with the only copy you have of precious files. BACKUP BACKUP BACKUP! Don't hold me liable for anything, except for being a nice guy who likes to share.
      TeraCopy Timer v2.8.zip  (see detail at Post #34)
      Enjoy!
      OLDER DOWNLOADS
      P.S. I am not affiliated in any way with those who created and provide the excellent third party program - TeraCopy.
    • rudi
      By rudi
      Hello,
       
      for some script I need to investigate the states checked/unchecked, hidden/shown, enabled/disabled to several checkbox controls.
       
      Any suggestions to this script to retrieve the information in a better way?
      ; Autoit Version 3.3.14.2 ; GuiCtrlCheckState.au3 #include <GUIConstantsEx.au3> #include <StaticConstants.au3> #include <WindowsConstants.au3> $CtrlW = 100 $CtrlH = 30 $GuiW = 250 $GuiH = 300 GUICreate("Test Checkbox Status", $GuiW, $GuiH) $Ctrl = GUICtrlCreateCheckbox("Checkbox", 10, 10, $CtrlW, $CtrlH) Opt("Guicoordmode", 2) $BtnDisable = GUICtrlCreateButton("Disable", -1, 10) $BtnEnable = GUICtrlCreateButton("Enable", -1, 1) $BtnHide = GUICtrlCreateButton("Hide", 10, -$CtrlH * 2 - 1) $BtnUnHide = GUICtrlCreateButton("Show (Unhide)", -1, 1) $BtnCheckChecked = GUICtrlCreateButton("IsChecked", -$CtrlW * 2 - 10, 40) $BtnCheckEnabled = GUICtrlCreateButton("IsEnabled", -1, 1) $BtnCheckHidden = GUICtrlCreateButton("IsHidden", -1, 1) GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ExitLoop Case $BtnDisable GUICtrlSetState($Ctrl, $gui_disable) Case $BtnEnable GUICtrlSetState($Ctrl, $GUI_Enable) Case $BtnHide GUICtrlSetState($Ctrl, $GUI_Hide) Case $BtnUnHide GUICtrlSetState($Ctrl, $GUI_show) Case $BtnCheckChecked If CheckState($Ctrl, $GUI_CHECKED) Then ConsoleWrite("Checked" & @CRLF) Else ConsoleWrite("not checked" & @CRLF) EndIf Case $BtnCheckEnabled If CheckState($Ctrl, $GUI_Enable) Then ConsoleWrite("enabled" & @CRLF) Else ConsoleWrite("disabled" & @CRLF) EndIf Case $BtnCheckHidden If CheckState($Ctrl, $GUI_Hide) Then ConsoleWrite("Hidden" & @CRLF) Else ConsoleWrite("not hidden" & @CRLF) EndIf EndSwitch WEnd Func CheckState($_CtrlID, $_State = $GUI_CHECKED) ConsoleWrite("---------------------" & @CRLF) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $_State to check = ' & $_State & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console Local $_Read = GUICtrlRead($_CtrlID) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $_Read (GuiCtrlRead) = ' & $_Read & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console Local $_StateFound = GUICtrlGetState($_CtrlID) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $_StateFound (GuiCtrlGetState) = ' & $_StateFound & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console If $_StateFound = -1 Then MsgBox(48, "Control-ID not defined", "Control-ID invalid") Return False ElseIf BitAND($_StateFound, $_State) = $_State Then Return True ElseIf BitAND($_Read, $_State) = $_State Then Return True Else Return False EndIf EndFunc ;==>CheckState Regards, Rudi.
    • gillesg
      By gillesg
      Hello,
      I am struggling in merging GUITreeViewEx, Shelltristate and enhancing to handle a third state that means : some items under are selected.
      I have difficulties handling expand order and key Space (especially when node is collapsed).
      Here the zip with UDF and and example.
       
      The problem I might need some advice to handle : 
      1- When load Treeview, have a correct settings of the checkbox for a tristate tree
      2 - Handle keyboard used for walking in tree
           Chicken is checked and  Steak is unchecked
          When walking with arrow to Meat, it gets unchecked
      3 - When node is collapsed and checked thru keyboard (space)
         the middle state is possible which should not
      Here is joined an animated gif showing the 3 problems
       
      Thanks for your advices
       
       
       
       
       
       
       
       
       
       
       

      GUITreeview3Ex.zip
    • Earthshine
      By Earthshine
      This is pretty useful to me at least, I hope to others. Whenever you need to poke a button or such on a GUI, you can just make calls to this UDF and instruct it how long to wait, 0 is forever, anyway, let the code to the explaining. Feel free to help expand this UDF. I plan to create new ones as I go along that support all the Win32 and .NET Controls. Ultimately, I would like to be able to fully control any type of control, this works well with most. Just an example of what you can do.
       
      The test installs and can uninstall 7-Zip 15.14 (x64) Setup.exe
      NOTE: Logger Author(s) .....: Michael Mims (zorphnog)
      ;                    the logging script can be obtained here
      ;                   https://www.autoitscript.com/forum/topic/156196-log4a-a-logging-udf/
       
       
      install_7zip_test.au3
      WaitForControls.au3
×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.