BigAl101 Posted 2 hours ago Posted 2 hours ago Hi, I'm hoping someone can point me in the direction, I've created basic AutoIT scripts in the past and now trying to create something more advanced for work. Originally I created a single GUI for creating XML to use for router auto provisioning, this GUI had various Input boxes, Combo boxes and used UDF input's such as _GUICtrlIpAddress_Create, and the combo boxes populated from arrays, I had the background set to one of the company colours and could tab through in order the various fields and this GUI has worked fine for the last couple of years. I'm now trying to create a GUI with multiple tabs for 2 different types of routers (different manufacturers) and an access point. I had varying success at this and have found loads of posts on the forums of examples but couldn't really find one that did everything I wanted, I then found an example from @Melba23 on the thread below which seemed todo everything I wanted, so have taken that as my base to build from however I've now stumbled across a few issues which I just cant figure out. My code below run's and creates the GUI I desire (minus a number of the input fields which I'm yet to add), in that I have 3 tab's all of which have a background colour matching the parent gui, I can hide the UDF created functions in the child GUI'S and the "router 1" tab is set as focused on start up and tabbing through the fields did work, however the issues I'm now facing are the following : Tabbing trough the fields in the child GUI's no longer works and I cant make the "Create Button" on the first tab actually function. I already have a working function from my first single pane GUI which will take the variables and populate the relevant fields for creating the XML output which I'd like to use if possible, but in my example below which I removed any company specific stuff for testing I'm just trying to get the create button to pop up a message box so I know it's working rather than calling my xml function. expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <GuiIPAddress.au3> #include <GUIConstants.au3> #include <GuiTab.au3> #include <EditConstants.au3> #include <StaticConstants.au3> #include <ListViewConstants.au3> #include <GDIPlus.au3> #include <WinAPIFiles.au3> #include <Array.au3> #include <GuiComboBox.au3> #include <FileConstants.au3> #include <MsgBoxConstants.au3> #include <ButtonConstants.au3> #include <ComboConstants.au3> Opt('MustDeclareVars', 1) Global $hImage, $hGraphic, $dGraphic, $dImage, $hH, $hW, $dH, $dW Example() Func Example() Local $hGUI, $hGUI_Child, $hGUI_Child0, $hGUI_Child1 Local $tab, $tab0, $tab1, $tab2 Local $hIPAddress, $aMsg, $R1CreateButton Global $R1mac, $R1pass, $R1Name, $R1LAN, $R1RIPLabel, $R1RouterIP, $R1DHCP_1, $R1DHCP_2, $R1DHCPStart, $R1DHCPEnd, $R1SUBLabel, $R1Subnet Global $R2Mac, $R2Name, $R2Pass Global $RMAC, $Password, $Rname, $SDHCP, $EDHCP, $Sub, $RIP ; Create main GUI $hGUI = GUICreate("Auto Provisioning XML Creator",920,820) GUISetBkColor(0xbfe1c9) GUICtrlCreateLabel("Red fields must be changed to unique values for each site, black fields apart from AZ01/AZ02 NAT IP fields should only be changed if you know what you are doing.", 10, 54, 900, 16) GUICtrlSetFont(-1, 9) ;GUISetState(@SW_HIDE) ; Load and draw logo 1 _GDIPlus_Startup() $hImage = _GDIPlus_ImageLoadFromFile("C:\AutoIT\logo1.png") $hH = _GDIPlus_ImageGetHeight($hImage) $hW = _GDIPlus_ImageGetWidth($hImage) $hGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ; _GDIPlus_GraphicsDrawImage($hGraphic, $hImage, 10, 10) ; Load and draw logo 2 $dImage = _GDIPlus_ImageLoadFromFile("C:\AutoIT\Logo2.png") $dH = _GDIPlus_ImageGetHeight($dImage) $dW = _GDIPlus_ImageGetWidth($dImage) $dGraphic = _GDIPlus_GraphicsCreateFromHWND($hGUI) ; _GDIPlus_GraphicsDrawImage($dGraphic, $dImage, 530, 10) GUISetState(@SW_SHOW, $hGUI) ; set the GUI as Visible. Repaint() GUIRegisterMsg($WM_PAINT, "WM_PAINT") ; Create a child window that will be incorparated into the main GUI $hGUI_Child = GUICreate("", 920, 730, 0, 90, BitOR($WS_CHILD, $WS_TABSTOP), -1, $hGUI) GUISetBkColor(0xbfe1c9, $hGUI_Child) ;Basic Settings GUICtrlCreateLabel("Basic Settings:", 20, 50, 120, 20) GUICtrlSetFont(-1, 9.5, 700) $R1Mac = GUICtrlCreateInput("0000AAAAAAAA", 90, 80, 90, 20) GUICtrlCreateLabel("Router MAC:", 20, 85, 70, 20) GUICtrlSetLimit($R1Mac, 12, 12) GUICtrlSetColor($R1Mac, 0xFF0000) $R1Pass = GUICtrlCreateInput("Password", 90, 110, 90, 20) GUICtrlCreateLabel("Password:", 20, 115, 70, 20) $R1Name = GUICtrlCreateInput("Name", 90, 140, 90, 20) GUICtrlCreateLabel("Router Name:", 20, 145, 70, 20) GUICtrlSetColor($R1Name, 0xFF0000) ; Red ;Lan Settings $R1LAN = GUICtrlCreateLabel("LAN Configuration Settings:", 20, 180, 160, 20) GUICtrlSetFont(-1, 9.5, 700) $R1RIPLabel = GUICtrlCreateLabel("Enter the Router IP below :", 20, 210, 160, 18) $R1RouterIP = _GUICtrlIpAddress_Create($hGUI_Child, 20, 225, 160, 20) _GUICtrlIpAddress_Set($R1RouterIP, "172.17.0.1") $R1DHCP_1 = GUICtrlCreateLabel("Enter first DHCP address below :", 20, 255, 160, 18) $R1DHCPStart = _GUICtrlIpAddress_Create($hGUI_Child, 20, 270, 160, 20) _GUICtrlIpAddress_Set($R1DHCPStart, "172.17.0.5") $R1DHCP_2 = GUICtrlCreateLabel("Enter last DHCP address below :", 20, 300, 160, 18) $R1DHCPEnd = _GUICtrlIpAddress_Create($hGUI_Child, 20, 315, 160, 20) _GUICtrlIpAddress_Set($R1DHCPEnd, "172.17.0.30") $R1SUBLabel = GUICtrlCreateLabel("Enter the subnet mask below :", 20, 345, 160, 18) $R1Subnet = _GUICtrlIpAddress_Create($hGUI_Child, 20, 360, 160, 20) _GUICtrlIpAddress_Set($R1Subnet, "255.255.255.224") ;VPN Settings Global $hVPNSettings = GUICtrlCreateLabel("VPN Settings:", 220, 50, 120, 20) GUICtrlSetFont(-1, 9.5, 700) GUICtrlCreateLabel("Pre Shared Key:", 220, 85, 85, 20) Global $hVPNPSK = GUICtrlCreateInput("PSK", 300, 80, 200, 20) GUICtrlSetColor(-1, 0xFF0000) ; Red GUICtrlCreateLabel("Local ID:", 220, 115, 60, 20) Global $hVPNLID = GUICtrlCreateInput("Local ID", 300, 110, 100, 20) GUICtrlSetLimit($hVPNLID, 13) GUICtrlSetColor(-1, 0xFF0000) ; Red GUICtrlCreateLabel("VPN1 NAT IP:", 220, 145, 70, 20) Global $hVPN1PH2ID = _GUICtrlIpAddress_Create($hGUI_Child, 300, 140, 100, 20) _GUICtrlIpAddress_Set($hVPN1PH2ID, "172.18.0.1") GUICtrlCreateLabel("VPN2 NAT IP:", 220, 175, 70, 20) Global $hVPN2PH2ID = _GUICtrlIpAddress_Create($hGUI_Child, 300, 170, 100, 20) _GUICtrlIpAddress_Set($hVPN2PH2ID, "172.19.0.0") Global $hVPNRIP = _GUICtrlIpAddress_Create($hGUI_Child, 300, 200, 100, 20) GUICtrlCreateLabel("Remote LAN IP:", 220, 205, 80, 20) Global $hVPNRSub = _GUICtrlIpAddress_Create($hGUI_Child, 300, 230, 100, 20) _GUICtrlIpAddress_Set($hVPNRSub, "255.255.255.255") GUICtrlCreateLabel("Rem Subnet IP:", 220, 235, 80, 20) $R1CreateButton = GUICtrlCreateButton("Create XML File", 760, 550, 96, 30) GUISetState(@SW_HIDE) $hGUI_Child0 = GUICreate("", 920, 730, 0, 90, BitOR($WS_CHILD, $WS_TABSTOP), -1, $hGUI) GUISetBkColor(0xbfe1c9, $hGUI_Child0) ;Basic Settings GUICtrlCreateLabel("Basic Settings:", 20, 50, 120, 20) GUICtrlSetFont(-1, 9.5, 700) $R2Mac = GUICtrlCreateInput("0000AAAAAAAA", 90, 80, 90, 20) GUICtrlCreateLabel("Router MAC:", 20, 85, 70, 20) GUICtrlSetLimit($R2Mac, 12, 12) GUICtrlSetColor($R2Mac, 0xFF0000) $R2Pass = GUICtrlCreateInput("Password", 90, 110, 90, 20) GUICtrlCreateLabel("Password:", 20, 115, 70, 20) $R2Name = GUICtrlCreateInput("Name", 90, 140, 90, 20) GUICtrlCreateLabel("Router Name:", 20, 145, 70, 20) GUICtrlSetColor($R2Name, 0xFF0000) ; Red $hIPAddress = _GUICtrlIpAddress_Create($hGUI_Child0, 10, 10) GUISetState(@SW_HIDE) $hGUI_Child1 = GUICreate("", 920, 730, 0, 90, BitOR($WS_CHILD, $WS_TABSTOP), -1, $hGUI) GUISetBkColor(0x257788, $hGUI_Child1) $hIPAddress = _GUICtrlIpAddress_Create($hGUI_Child1, 10, 10) GUISetState(@SW_HIDE) GUISetState() ; Go back to main GUI GUISwitch($hGui, $tab0) ; Create tab structure $tab = GUICtrlCreateTab(0, 70, 920, 820) $tab0 = GUICtrlCreateTabItem("Router Type 1") GUICtrlCreateLabel("Router Type 1",380, 100, 145, 40) ; No need to store ControlID if you never use it <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< GUICtrlSetFont(-1, 16, 700) $tab1 = GUICtrlCreateTabItem("Router Type 2") GUICtrlCreateLabel("Router Type 2", 380, 100, 180, 40) ; No need to store ControlID if you never use it <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< GUICtrlSetFont(-1, 16, 700) $tab2 = GUICtrlCreateTabItem("Access Point") GUICtrlCreateLabel("Access Point", 380, 100, 145, 40) ; No need to store ControlID if you never use it <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< GUICtrlSetFont(-1, 16, 700) GUICtrlCreateTabItem("") ; end tabitem definition _GUICtrlTab_SetCurFocus($Tab, 0) GUISetState() ; Run the GUI until the dialog is closed While 1 $aMsg = GUIGetMsg(1) Switch $aMsg[0] Case $GUI_EVENT_CLOSE _Exit() Case $tab ; Show/Hide the child GUI as required Switch GUICtrlRead($tab) Case 0 GUISetState(@SW_HIDE, $hGUI_Child0) GUISetState(@SW_HIDE, $hGUI_Child1) GUISetState(@SW_SHOW, $hGUI_Child) Case 1 GUISetState(@SW_SHOW, $hGUI_Child0) GUISetState(@SW_HIDE, $hGUI_Child) GUISetState(@SW_HIDE, $hGUI_Child1) Case 2 GUISetState(@SW_HIDE, $hGUI_Child) GUISetState(@SW_HIDE, $hGUI_Child0) GUISetState(@SW_SHOW, $hGUI_Child1) EndSwitch Switch $aMsg[0] Case $hGUI_Child Case $R1CreateButton MsgBox($MB_ICONQUESTION, "Create XML", "This is a test box to check button function") EndSwitch EndSwitch WEnd _Exit() EndFunc ;==>Example Func Repaint() _GDIPlus_GraphicsDrawImageRect($hGraphic, $hImage, 10, 06, $hW, $hH) _GDIPlus_GraphicsDrawImageRect($dGraphic, $dImage, 700, 06, $dW, $dH) EndFunc ;==>Repaint Func WM_PAINT() Repaint() Return "GUI_RUNDEFMSG" EndFunc ;==>WM_PAINT Func _Exit() GUIRegisterMsg($WM_PAINT, "") _GDIPlus_GraphicsDispose($hGraphic) _GDIPlus_ImageDispose($hImage) _GDIPlus_GraphicsDispose($dGraphic) _GDIPlus_ImageDispose($dImage) _GDIPlus_Shutdown() GUIDelete() Exit EndFunc ;==>_Exit
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