DaRam Posted June 5, 2008 Share Posted June 5, 2008 (edited) I have a GUI with unknown # of buttons and associated menu items (loaded from a configuration file).Currently using the GUI Poll method, I have this:; Note: $Groups is an Array that is loaded with items ; $Btn_Groups and $MenuViewGroups are Redimed and defined using $Groups contents Local $I, $GUIMsg While 1 $GUIMsg = GUIGetMsg() Switch $GUIMsg Case $Btn_Groups[0] To $Btn_Groups[UBound($Groups)-1] For $I = 0 To UBound($Groups)-1 If $GUIMsg = $Btn_Groups[$I] Then $Active_Group = $I Load_Group_Items() EndIf Next;$I Case $MenuViewGroups[0] To $MenuViewGroups[UBound($Groups)-1] For $I = 0 To UBound($Groups)-1 If $GUIMsg = $MenuViewGroups[$I] Then $Active_Group = $I Load_Group_Items() EndIf Next;$I EndSwitch WEndthe Buttons/Menu Items are defined as below:$J = UBound($Groups) ReDim $Btn_Groups[$J] ReDim $MenuViewGroups[$J] $J = $J - 1 For $I = 0 To $J; View->Group->Menu Items [HAVE TO BE ADDED IN SEQUENCE, otherwise will NOT Trigger !!!] $MenuViewGroups[$I] = GUICtrlCreateMenuItem($Groups[$I], $MenuViewGroup) Next;$I For $I = 0 To $J; Group Buttons $Top = $Top + 70 $Btn_Groups[$I] = GUICtrlCreateButton($Groups[$I], 5, $Top, 65, 65, BitOR($BS_CENTER, $BS_MULTILINE, $BS_BITMAP)) Next;$II need to switch to the GUI OnEvent Mode (because of ListView tracking, sort, etc.). Any Ideas/suggestions to effectively implement a call to the "Load_Group_Items()" Func. while tracking which Button/Menu was clicked ($Active_Group variable is the one used in Load_Group_Items func.) ?Wish I could just do.... GUICtrlSetOnEvent($Btn_Groups[0] To $Btn_Groups[uBound($Groups)-1], "Load_Group_Items") andGUICtrlSetOnEvent($MenuViewGroups[0] To $MenuViewGroups[uBound($Groups)-1], "Load_Group_Items") But then I don't know which is the button/menu clicked :-(Edit: Oops, wrong forum, How do I move this to the GUI Help/Support Forum? Edited June 5, 2008 by DaRam Link to comment Share on other sites More sharing options...
monoceres Posted June 5, 2008 Share Posted June 5, 2008 An example says more than a million words #include <GUIConstantsEx.au3> Opt("GUIOnEventMode",1) GUICreate("Sample",400,50) Dim $controls[10] For $i=0 To UBound($controls)-1 $controls[$i]=GUICtrlCreateButton($i,$i*30+10,10,30) GUICtrlSetOnEvent(-1,"_Buttonclicked") Next GUISetOnEvent($GUI_EVENT_CLOSE,"close") GUISetState() Do Sleep(100) Until False Func close() Exit EndFunc Func _Buttonclicked() For $i=0 To UBound($controls)-1 If @GUI_CtrlId=$controls[$i] Then ; @GUI_CtrlID is the control that fired the event. MsgBox(0,"Button clicked","Button number "&$i&" was clicked.") ExitLoop EndIf Next EndFunc Broken link? PM me and I'll send you the file! Link to comment Share on other sites More sharing options...
DaRam Posted June 5, 2008 Author Share Posted June 5, 2008 Awesome. Thanks Monoceres - exactly what I was looking for....Brainfreeze An example says more than a million words You are so right ! 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