resize gadget in container

BlitzMax Forums/BlitzMax Beginners Area/resize gadget in container

Smokey(Posted 2005) [#1]
Hi

I create a panel as container , I put a button in it it's work
if I resize the window I resize at the same time the panel
but my button move too, it's there a way to reposition the button at the same place where it use to be?

here my code

Strict 

Global window:TGadget
Global panel:TGadget
Global button1:TGadget
Global Popup_Menu:TGadget
Global gadgetlist:TList=New TList


window=CreateWindow("My Window",40,40,320,240,Null,WINDOW_TITLEBAR|EVENT_WINDOWSIZE|WINDOW_STATUS)

panel=CreatePanel(0,0,ClientWidth(window),ClientHeight(window),window,PANEL_ACTIVE)

button1 = CreateButton("Button",0,0,64,24,panel)


'Add the button to the gadget list
gadgetlist.AddLast button1


'Add our hook to the system
AddHook EmitEventHook,MyEventHook


'The main loop and the others event
While True
	WaitEvent 
	Select CurrentEvent.ID
          Case EVENT_MOUSEENTER
               SetGadgetText button1,"Button"
               SetStatusText window,"Mouse in main window area"
          Case EVENT_MOUSELEAVE
		    Select MouseOverGadget()
		   	
			      Case button1
		            	SetGadgetText button1,"mouseover"
			            SetStatusText window,"Mouse over button"
			
			End Select
           Case EVENT_MOUSEDOWN
	
    End Select
Wend


'Hooks mouse event
Function MyEventHook:Object( id,data:Object,context:Object )
	Local ev:TEvent=TEvent(data)
	   Select ev.id
		Case EVENT_WINDOWCLOSE
			End
			
	    Case EVENT_MOUSEDOWN
	        If ev.data = Mouse_Right
	            PopupUP()

	           If Popup_Menu<>Null PopupWindowMenu(window,popup_menu)  
	        EndIf 
'	       EndIf
	    
	    Case EVENT_WINDOWSIZE
	       SetGadgetShape(panel,0,0,ClientWidth(window),ClientHeight(window))
	     'even if I resize the panel, the button in it does't 
             'resize at the same place where it should be.
             'Try resizing the window you will see.
	    

	   End Select
	
	
	Return data
End Function

'Detect if the mouse is over a gadget Ie:this is not my routine
Function MouseOverGadget:TGadget()
	Local mx=CurrentEvent.x
	Local my=CurrentEvent.y
	For Local g:TGadget=EachIn gadgetlist
		If mx>=g.xpos And mx<g.xpos+g.width
			If my>=g.ypos And my<g.ypos+g.height
				Return g
			EndIf
		EndIf
	Next
	Return Null
End Function

'Create the popup
Function PopupUP()
         Popup_Menu=CreateMenu("Quick Help",125,panel)
         CreateMenu "Copy",126,popup_menu,KEY_N,MODIFIER_COMMAND
         CreateMenu "Past",127,popup_menu,KEY_N,MODIFIER_COMMAND
End Function



also, the popup does't work over the button because the mouse leave the panel.... Do I need to create a new popup when mouse get over each gadget?