YellowLab Posted June 26, 2008 Posted June 26, 2008 (edited) I have some child windows that I can't figure out how to be able to tab through the input boxes Here is an example that works: expandcollapse popupGlobal Const $GUI_DISABLE = 128 Global Const $GUI_EVENT_CLOSE = -3 Dim $InputDE[8] ;create main screen $Main = GUICreate("Main", 400, 260, 200, 200,-1,-1) GUISetBkColor(0xFFFFFF) $InputDE[1] = GUICtrlCreateInput("MM/DD/YY", 280, 48, 113, 21) $InputDE[2] = GUICtrlCreateInput("", 280, 72, 113, 21) $InputDE[3] = GUICtrlCreateInput("", 280, 96, 113, 21) $InputDE[4] = GUICtrlCreateInput("", 280, 120, 113, 21) $InputDE[5] = GUICtrlCreateInput("", 280, 144, 113, 21) $InputDE[6] = GUICtrlCreateInput("", 280, 168, 113, 21) $InputDE[7] = GUICtrlCreateInput("", 280, 192, 113, 21) $bEnterDE = GUICtrlCreateButton("Enter", 312, 224, 81, 25, 0) GUISetState() While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit EndSwitch WEndoÝ÷ ØúènW¦ËayÖiéí¯(¬¢v§¢Ø^® zj+zX¤zØb±«¢+Ù±½° ½¹ÍÐÀÌØíU%}%M 1ôÄÈà)±½° ½¹ÍÐÀÌØíU%}Y9Q} 1=Mô´Ì)±½° ½¹ÍÐÀÌØí]M} !%1ôÁàÐÀÀÀÀÀÀÀ()¥´ÀÌØí%¹ÁÕÑlát((íÉѵ¥¸Íɸ(ÀÌØí5¥¸ôU% ÉÑ ÅÕ½Ðí5¥¸ÅÕ½Ðì°ÐÀÀ°ÈØÀ°ÈÀÀ°ÈÀÀ°´Ä°´Ä¤)U%MÑ ½±½È Áá¤)U%MQMÑÑ ¤((ÀÌØí ÕÑѽ¹ÌôU% ÉÑ ÅÕ½Ðí ÕÑѽ¹ÌÅÕ½Ðì°ÐÀÀ°ÈØÀ°À°À°ÀÌØí]M} !%1°´Ä°ÀÌØí5¥¸¤)U%MÑ ½±½È Áá¤(ÀÌØíѹÑÉäôU% Ñɱ ÉÑ ÕÑѽ¸ ÅÕ½Ðí¹ÑÈÑÅÕ½Ðì°ÈÌȰÐà°ÄÌܰḬ̀À¤)U%MÑMÑÑ ¤((ÀÌØíѹÑÉäôU% ÉÑ ÅÕ½ÐíѹÑÉäÅÕ½Ðì°ÐÀÀ°ÈØÀ°À°À°ÀÌØí]M} !%1°´Ä°ÀÌØí5¥¸¤)U%MÑ ½±½È Áá¤(ÀÌØí%¹ÁÕÑlÅtôU% Ñɱ ÉÑ%¹ÁÕÐ ÅÕ½Ðí54½½edÅÕ½Ðì°ÈàÀ°Ðà°ÄÄ̰ÈĤ(ÀÌØí%¹ÁÕÑlÉtôU% Ñɱ ÉÑ%¹ÁÕÐ ÅÕ½ÐìÅÕ½Ðì°ÈàÀ°ÜȰÄÄ̰ÈĤ(ÀÌØí%¹ÁÕÑlÍtôU% Ñɱ ÉÑ%¹ÁÕÐ ÅÕ½ÐìÅÕ½Ðì°ÈàÀ°äذÄÄ̰ÈĤ(ÀÌØí%¹ÁÕÑlÑtôU% Ñɱ ÉÑ%¹ÁÕÐ ÅÕ½ÐìÅÕ½Ðì°ÈàÀ°ÄÈÀ°ÄÄ̰ÈĤ(ÀÌØí%¹ÁÕÑlÕtôU% Ñɱ ÉÑ%¹ÁÕÐ ÅÕ½ÐìÅÕ½Ðì°ÈàÀ°ÄÐаÄÄ̰ÈĤ(ÀÌØí%¹ÁÕÑlÙtôU% Ñɱ ÉÑ%¹ÁÕÐ ÅÕ½ÐìÅÕ½Ðì°ÈàÀ°ÄØà°ÄÄ̰ÈĤ(ÀÌØí%¹ÁÕÑlÝtôU% Ñɱ ÉÑ%¹ÁÕÐ ÅÕ½ÐìÅÕ½Ðì°ÈàÀ°ÄäȰÄÄ̰ÈĤ(ÀÌØí¹ÑÉôU% Ñɱ ÉÑ ÕÑѽ¸ ÅÕ½Ðí¹ÑÈÅÕ½Ðì°ÌÄȰÈÈаàİÈÔ°À¤(ÀÌØí5¥¹ôU% Ñɱ ÉÑ ÕÑѽ¸ ÅÕ½Ðí5¥¸ÅÕ½Ðì°ÈÀà°ÈÈаàİÈÔ°À¤)U%MÑMÑÑ¡M]}!%¤()]¡¥±Ä($ÀÌØí¹5ÍôU%Ñ5Í ¤(%MÝ¥Ñ ÀÌØí¹5Í($% ÍÀÌØíU%}Y9Q} 1=M($$%á¥Ð($% ÍÀÌØíѹÑÉä($$%U%MÑMÑÑ¡M]}!%°ÀÌØí ÕÑѽ¹Ì¤($$%U%MÑMÑÑ¡M]}M!=°ÀÌØíѹÑÉä¤($% ÍÀÌØí5¥¸($$%U%MÑMÑÑ¡M]}M!=°ÀÌØí ÕÑѽ¹Ì¤($$%U%MÑMÑÑ¡M]}!%°ÀÌØíѹÑÉä¤(%¹MÝ¥Ñ )]¹ The child window is below the main window and tabbing doesn't go through the inputs. I have wracked my brain on different window styles trying to get this to work and have hit a wall. I have probably butchered how parent/child windows are supposed to work. Guidance on where to look to solve my issue would be appreciated. I have gone through window styles in the help and done some searches here on the forms but without success. Thanks, Bob Edited June 27, 2008 by YellowLab You can't see a rainbow without first experiencing the rain.
enaiman Posted June 26, 2008 Posted June 26, 2008 I don't know why tabbing doesn't work in this case (parent-child) and I guess you're right about messing with these. One question though: do you really need to use child windows? I wouldn't use them at all; this can be done with a simple GUI, no need for fancy things. It is a longer code and not so "elegant" but it works. expandcollapse popup#include <GUIConstantsEx.au3> Opt("GUIOnEventMode", 1) Dim $InputDE[8], $bMainDE, $bEnterDE Dim $FirstRun = 1 ;flag for creating/showing the controls - =1 means controls will be created ;create main screen $Main = GUICreate("Main", 400, 260, 200, 200,-1,-1) GUISetOnEvent($GUI_EVENT_CLOSE, "XClose") GUISetBkColor(0xFFFFFF) $bDataEntry = GUICtrlCreateButton("Enter Data", 232, 48, 137, 33, 0) GUICtrlSetOnEvent(-1, "Create_Inputboxes") GUISETState() While 1 Sleep(200) WEnd Func Create_Inputboxes() If $FirstRun = 1 Then GUICtrlSetState($bDataEntry, $GUI_HIDE) $InputDE[1] = GUICtrlCreateInput("MM/DD/YY", 280, 48, 113, 21) $InputDE[2] = GUICtrlCreateInput("", 280, 72, 113, 21) $InputDE[3] = GUICtrlCreateInput("", 280, 96, 113, 21) $InputDE[4] = GUICtrlCreateInput("", 280, 120, 113, 21) $InputDE[5] = GUICtrlCreateInput("", 280, 144, 113, 21) $InputDE[6] = GUICtrlCreateInput("", 280, 168, 113, 21) $InputDE[7] = GUICtrlCreateInput("", 280, 192, 113, 21) $bEnterDE = GUICtrlCreateButton("Enter", 312, 224, 81, 25, 0) GUICtrlSetOnEvent(-1, "EnterData") $bMainDE = GUICtrlCreateButton("Main", 208, 224, 81, 25, 0) GUICtrlSetOnEvent(-1, "ShowMain") $FirstRun = 0 ;sets the value to 0 - from now on the controls will be only made visible Else GUICtrlSetState($bDataEntry, $GUI_HIDE) GUICtrlSetState($InputDE[1], $GUI_SHOW) GUICtrlSetState($InputDE[2], $GUI_SHOW) GUICtrlSetState($InputDE[3], $GUI_SHOW) GUICtrlSetState($InputDE[4], $GUI_SHOW) GUICtrlSetState($InputDE[5], $GUI_SHOW) GUICtrlSetState($InputDE[6], $GUI_SHOW) GUICtrlSetState($InputDE[7], $GUI_SHOW) GUICtrlSetState($bEnterDE, $GUI_SHOW) GUICtrlSetState($bMainDE, $GUI_SHOW) EndIf EndFunc Func XClose() Exit EndFunc Func EnterData() EndFunc Func ShowMain() ;just to hide the controls GUICtrlSetState($bDataEntry, $GUI_SHOW) GUICtrlSetState($InputDE[1], $GUI_HIDE) GUICtrlSetState($InputDE[2], $GUI_HIDE) GUICtrlSetState($InputDE[3], $GUI_HIDE) GUICtrlSetState($InputDE[4], $GUI_HIDE) GUICtrlSetState($InputDE[5], $GUI_HIDE) GUICtrlSetState($InputDE[6], $GUI_HIDE) GUICtrlSetState($InputDE[7], $GUI_HIDE) GUICtrlSetState($bEnterDE, $GUI_HIDE) GUICtrlSetState($bMainDE, $GUI_HIDE) EndFunc SNMP_UDF ... for SNMPv1 and v2c so far, GetBulk and a new example script wannabe "Unbeatable" Tic-Tac-Toe Paper-Scissor-Rock ... try to beat it anyway :)
YellowLab Posted June 27, 2008 Author Posted June 27, 2008 Thanks enaiman. Your solution does work and I will implement it into my project. I am still a little befuddled about the parent - child relationship and how these windows are most effectively used and would like to understand better. Any help in this area would be appreciated. Bob You can't see a rainbow without first experiencing the rain.
YellowLab Posted June 27, 2008 Author Posted June 27, 2008 This solution is "almost" as elegant as the OP: expandcollapse popupGlobal Const $GUI_EVENT_CLOSE = -3 Global Const $GUI_SHOW = 16 Global Const $GUI_HIDE = 32 Dim $InputDE[8] ;create main screen $Main = GUICreate("Main", 400, 260, 200, 200,-1,-1) GUISetBkColor(0xFFFFFF) ;main buttons $bDataEntry = GUICtrlCreateButton("Enter Data", 232, 48, 137, 33, 0) ;data entry $InputDE[1] = GUICtrlCreateInput("MM/DD/YY", 280, 48, 113, 21) $InputDE[2] = GUICtrlCreateInput("", 280, 72, 113, 21) $InputDE[3] = GUICtrlCreateInput("", 280, 96, 113, 21) $InputDE[4] = GUICtrlCreateInput("", 280, 120, 113, 21) $InputDE[5] = GUICtrlCreateInput("", 280, 144, 113, 21) $InputDE[6] = GUICtrlCreateInput("", 280, 168, 113, 21) $InputDE[7] = GUICtrlCreateInput("", 280, 192, 113, 21) $bEnterDE = GUICtrlCreateButton("Enter", 312, 224, 81, 25, 0) $bMainDE = GUICtrlCreateButton("Main", 208, 224, 81, 25, 0) _MyDataEntryToggle($GUI_HIDE) GUISetState(@SW_SHOW,$Main) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $bDataEntry _MyMainButtonsToggle($GUI_HIDE) _MyDataEntryToggle() Case $bMainDE _MyDataEntryToggle($GUI_HIDE) _MyMainButtonsToggle() EndSwitch WEnd Func _MyDataEntryToggle($nState=$GUI_SHOW) For $nCount = 1 To 7 GUICtrlSetState($InputDE[$nCount],$nState) Next GUICtrlSetState($bEnterDE,$nState) GUICtrlSetState($bMainDE,$nState) EndFunc ;==>_MyDataEntryToggle Func _MyMainButtonsToggle($nState=$GUI_SHOW) GUICtrlSetState($bDataEntry,$nState) EndFunc ;==>_MyMainButtonsToggle You can't see a rainbow without first experiencing the rain.
enaiman Posted June 30, 2008 Posted June 30, 2008 Well done SNMP_UDF ... for SNMPv1 and v2c so far, GetBulk and a new example script wannabe "Unbeatable" Tic-Tac-Toe Paper-Scissor-Rock ... try to beat it anyway :)
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