Select EventSource() for Panels ?

BlitzMax Forums/MaxGUI Module/Select EventSource() for Panels ?

SpaceTime(Posted 2007) [#1]
I'm trying to detect wether the mouse is over two panels. I have another way more complex way of trying to do it that I believe will work. But I was wondering why the current way i'm trying to do it doesn't work. It's a little hard to adjust to blitz max b/c there's no examples using the commands I want to use (like blitz 3d). The code runs but it doesn't do what I want it to do. if u think you know how to do it, please let me know! thanks. By the way, does anyone know where I can find a bunch of examples using the most important and useful blitz GUI functions (besides on this website) ?

the code is right here...

Global MyWindow:TGadget=CreateWindow("My Window", 0,0,800,600)
Global Panel_1:TGadget=CreatePanel(200,100,100,50, MyWindow, 10, "Panel 1")
SetpanelColor(Panel_1, 255,0,0)
Global Panel_2:TGadget=CreatePanel(500,100,100,50, MyWindow, 10, "Panel 2")
SetpanelColor(Panel_2, 0,255,0)

Repeat
WaitEvent()

Select EventID()
Case EVENT_WINDOWCLOSE
End

Case EVENT_GADGETACTION
'----------------------------------
Select EventSource()



Case Panel_1

Select EventID()
Case EVENT_MOUSEENTER,EVENT_MOUSEUP
'Print("its on")
SetStatusText MyWindow,"Over Panel 1"
End Select


Case Panel_2
Select EventID()
Case EVENT_MOUSEENTER,EVENT_MOUSEUP
'Print("its on")
SetStatusText MyWindow,"Over Panel 2"
End Select


End Select 'eventSource
'-----------------------------------
End Select 'event_gadgetaction
Forever


Brucey(Posted 2007) [#2]
Here's your example with a lot less Select/Case statments...
Global MyWindow:TGadget=CreateWindow("My Window", 0,0,800,600)
Global Panel_1:TGadget=CreatePanel(200,100,100,50, MyWindow, PANEL_ACTIVE | PANEL_GROUP, "Panel 1" )
SetPanelColor(Panel_1, 255,0,0)
Global Panel_2:TGadget=CreatePanel(500,100,100,50, MyWindow, PANEL_ACTIVE | PANEL_GROUP, "Panel 2" )
SetPanelColor(Panel_2, 0,255,0)

Repeat
	WaitEvent()

	Select EventID()
		Case EVENT_WINDOWCLOSE
			End
	End Select

	'----------------------------------
	Select EventSource()
	
		Case Panel_1

			Select EventID()
				Case EVENT_MOUSEENTER
					SetStatusText MyWindow,"Over Panel 1"
			End Select


		Case Panel_2
			Select EventID()
				Case EVENT_MOUSEENTER
					SetStatusText MyWindow,"Over Panel 2"
			End Select


	End Select 'eventSource
'-----------------------------------

Forever 


btw... you can use {code} {/code} or {codebox} {/codebox} for your source - replace curly brackets with SQUARE brackets ;-)


SpaceTime(Posted 2007) [#3]
Thanks Brucey, that was very helpful


MacSven(Posted 2008) [#4]
I have the same probleme under MacOS X! Can anybody help!
I have 2 Graphics panel then i print out the currentevent it shows me only the mousebutton state and the x and y coordinate this is all.


DavidDC(Posted 2008) [#5]
You need to check the context via EventSource() or event.source (as shown in the code above).


MacSven(Posted 2008) [#6]
OK, i have it, the source will work.