Canvas as child of tabber

BlitzMax Forums/BlitzMax GUI Programming/Canvas as child of tabber

The forum is locked. These are the original blitzbasic.com forums, kept so they can still be read. No new topics, replies or edits can be made here. To join in, head over to the Blitz3D+ forums.

Works fine here:
Tabber with two tabs. Each tab has a border panel and each border panel contains a canvas.
Hmm, maybe you didn't notice that the tabber doesn't switch anything, you have to do it yourself on event...

SuperStrict
Import MaxGui.Win32MaxGui

Local Window1:TGadget = CreateWindow:TGadget("Window1",260,102,407,272,Null,WINDOW_TITLEBAR|WINDOW_RESIZABLE |WINDOW_STATUS |WINDOW_CLIENTCOORDS )
	Local Tabber1:TGadget = CreateTabber:TGadget(24,39,338,209,Window1:TGadget,Null)
		AddGadgetItem( Tabber1:TGadget,"Tab1",GADGETITEM_DEFAULT )
		Local Tabber1_Tab1:TGadget = CreatePanel( 0,0,ClientWidth(Tabber1:TGadget),ClientHeight(Tabber1:TGadget),Tabber1:TGadget )
			Tabber1.items[0].extra = Tabber1_Tab1:TGadget
			SetGadgetLayout( Tabber1_Tab1,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED )
			Local BorderPanel1:TGadget = CreatePanel:TGadget(35,24,262,136,Tabber1_Tab1:TGadget,PANEL_BORDER,"BorderPanel1")
				Local Canvas1:TGadget = CreateCanvas:TGadget(0,0,258,132,BorderPanel1:TGadget,Null)
					SetGadgetLayout( Canvas1:TGadget,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED )
		AddGadgetItem( Tabber1:TGadget,"Tab2",GADGETITEM_NORMAL )
		Local Tabber1_Tab2:TGadget = CreatePanel( 0,0,ClientWidth(Tabber1:TGadget),ClientHeight(Tabber1:TGadget),Tabber1:TGadget )
			Tabber1.items[1].extra = Tabber1_Tab2:TGadget
			SetGadgetLayout( Tabber1_Tab2,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED )
			Local BorderPanel2:TGadget = CreatePanel:TGadget(44,29,235,130,Tabber1_Tab2:TGadget,PANEL_BORDER,"BorderPanel2")
				Local Canvas2:TGadget = CreateCanvas:TGadget(0,0,231,126,BorderPanel2:TGadget,Null)
					SetGadgetLayout( Canvas2:TGadget,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED,EDGE_ALIGNED )
		Tabber1_GA( Tabber1:TGadget , 0 )

Repeat
	WaitEvent()
	Select EventID()
		Case EVENT_WINDOWCLOSE
			Select EventSource()
				Case Window1	Window1_WC( Window1:TGadget )
			End Select

		Case EVENT_GADGETACTION
			Select EventSource()
				Case Tabber1	Tabber1_GA( Tabber1:TGadget , EventData() )
			End Select

		Case EVENT_GADGETPAINT
			Select EventSource()
				Case Canvas2	Canvas2_GP( Canvas2:TGadget )
				Case Canvas1	Canvas1_GP( Canvas1:TGadget )
			End Select

	End Select
Forever

Function Window1_WC( Window:TGadget )
	DebugLog "Window Window1 wants to be closed"
'	HideGadget( Window:TGadget )

	End
End Function

Function Tabber1_GA( Tabber:TGadget , Number:Int )
	DebugLog "Tabber Tabber1 selected Tab " + Number
	For Local i:Int = 0 To Tabber.items.length -1
		HideGadget( TGadget( Tabber.items[i].extra ) )
	Next
	ShowGadget( TGadget( Tabber.items[Number].extra ) )
	
End Function

Function Canvas2_GP( Canvas:TGadget )
	DebugLog "Canvas Canvas2 needs to be redrawn"
	SetGraphics CanvasGraphics ( Canvas )
	SetViewport 0,0,GadgetWidth( Canvas ),GadgetHeight( Canvas )
	
	SetColor( 208,216,61 )
	SetClsColor( 118,131,184 )
	Cls
	DrawText( "LogicZone" ,1,1 )
	Flip

End Function

Function Canvas1_GP( Canvas:TGadget )
	DebugLog "Canvas Canvas1 needs to be redrawn"
	SetGraphics CanvasGraphics ( Canvas )
	SetViewport 0,0,GadgetWidth( Canvas ),GadgetHeight( Canvas )
	
	SetColor( 208,216,61 )
	SetClsColor( 118,131,184 )
	Cls
	DrawText( "LogicZone" ,1,1 )
	Flip

End Function