YellowLab Posted June 26, 2008 Share 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. Link to comment Share on other sites More sharing options...
enaiman Posted June 26, 2008 Share 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 :) Link to comment Share on other sites More sharing options...
YellowLab Posted June 27, 2008 Author Share 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. Link to comment Share on other sites More sharing options...
YellowLab Posted June 27, 2008 Author Share 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. Link to comment Share on other sites More sharing options...
enaiman Posted June 30, 2008 Share 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 :) Link to comment Share on other sites More sharing options...
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