Page 1 of 1

How to find out, which of the gadgets is activated?

Posted: Thu Aug 18, 2005 11:14 am
by high key
I need to know, which one of several gadgets is activated.
Setting the focus to a gadget is easy with activategadget(#),
but I didn't find a function, to GET the number of the active gadget (which could have changed since the last activategadget)

Posted: Thu Aug 18, 2005 1:55 pm
by Dare2
Heya high key,

When I need something like this I set a var at time of activating, eg, curActiveGadget = #_whatever

Posted: Thu Aug 18, 2005 3:03 pm
by Fred
You can try the GetFocus_() API on Windows and compare its result with GadgetID(YourGadget).

Simple solution

Posted: Thu Aug 18, 2005 3:03 pm
by high key
I found out a simple solution for myself *g*

to test, if gadget(x) is activated, I now use the following lines

thefocusishere=getfocus_()

if gadgetid(gadget(x)) = thefocusishere
; gadget(x) has the focus!
endif

@ Fred

Posted: Thu Aug 18, 2005 3:05 pm
by high key
You were first ;-))

Thanks :-)

and I had an error

Posted: Thu Aug 18, 2005 3:08 pm
by high key
if gadgetid(x) =...

Posted: Thu Aug 18, 2005 3:39 pm
by Fred
:lol:

Posted: Fri Sep 02, 2005 9:56 am
by RichardL
Does this method work with ComboBoxGadget?

I make a ComboBox thus:

Code: Select all

ComboBoxGadget(3,Gx+5,Gy+15,100,200,#PB_ComboBox_Editable )
And set up a hot key:

Code: Select all

AddKeyboardShortcut(1, #PB_Shortcut_Return ,504)
And then try to detect if the user has pressed RETURN on it in the #PB_EventMenu handler:

Code: Select all

        Case 504  ; Hot key 'RETURN'
          Debug GetFocus_()
          Debug GadgetID(3)
          
          If GetFocus_() = GadgetID(3)
           MyBeep(1000,100) 
          EndIf

No beeps!
The two debug values look 'real'... but are different :(

Posted: Fri Sep 02, 2005 11:06 am
by RichardL
OK, found it by searching this site... it seems the ComboBox is a special case.

Code: Select all

 
       Case 504  ; Hot key 'RETURN'
          If GetFocus_() = GetWindow_(GadgetID(3), #GW_CHILD)
            MyBeep(1000,100) 
          EndIf
As my mother used to say...

"None so blind as those who do not look in the right place!"