Code: Select all
;-TOP
IncludeFile "AdvancedGadgetFunctions.pb"
UseModule AGF
; Events
Myfont = LoadFont(0, "Arial", 14, #PB_Font_Bold)
Procedure DrawCanvasButton(Gadget)
Protected text_dx, text_dy, text.s
Protected state, dx, dy, BorderSize
Protected BackColor, FrontColor
text = GetGadgetDataString(Gadget, "Text")
dx = GetGadgetDataInteger(Gadget, "Width")
dy = GetGadgetDataInteger(Gadget, "Height")
state = GetGadgetDataInteger(Gadget, "State")
BorderSize = GetGadgetDataInteger(Gadget, "BorderSize")
If state = 1
BackColor = GetGadgetDataInteger(Gadget, "BackColorMouseOver")
Else
BackColor = GetGadgetDataInteger(Gadget, "BackColor")
EndIf
FrontColor = GetGadgetDataInteger(Gadget, "FrontColor")
If StartDrawing(CanvasOutput(Gadget))
DrawingFont(FontID(0))
text_dx = TextWidth(text)
text_dy = TextHeight(text)
Box(0, 0, dx, dy, GetGadgetDataInteger(Gadget, "BorderColor"))
Box(BorderSize, BorderSize, dx - BorderSize * 2, dy - BorderSize * 2, BackColor)
DrawText(dx / 2 - text_dx / 2, dy / 2 - text_dy / 2, text, FrontColor, BackColor)
StopDrawing()
EndIf
EndProcedure
Procedure EventHandler_CanvasButton()
Protected gadget, *property.string
gadget = EventGadget()
Select EventType()
Case #PB_EventType_LeftButtonDown
SetGadgetDataInteger(gadget, 2 , "State")
Case #PB_EventType_LeftButtonUp
SetGadgetDataInteger(gadget, 1 , "State")
Case #PB_EventType_MouseEnter
SetGadgetDataInteger(gadget, 1 , "State")
Case #PB_EventType_MouseLeave
SetGadgetDataInteger(gadget, 0 , "State")
Case #My_EventType_ChangeGadgetData
*property = EventData()
Debug "Change GadgetData " + gadget + ": " + *property\s
DrawCanvasButton(gadget)
EndSelect
EndProcedure
Procedure CanvasButton(Gadget, x, y, Width, Height, Text.s)
Protected id, result
id = CanvasGadget(Gadget, x, y, Width, Height)
If id = 0
ProcedureReturn 0
EndIf
If Gadget = #PB_Any
result = id
Else
result = Gadget
EndIf
SetGadgetDataInteger(result, 0, "State")
SetGadgetDataInteger(result, x, "x")
SetGadgetDataInteger(result, x, "y")
SetGadgetDataInteger(result, Width, "Width")
SetGadgetDataInteger(result, Height, "Height")
SetGadgetDataString(result, Text, "Text")
SetGadgetDataInteger(result, $F0F0F0, "FrontColor")
SetGadgetDataInteger(result, $FF7070, "BackColor")
SetGadgetDataInteger(result, $7070FF, "BackColorMouseOver")
SetGadgetDataInteger(result, $FF4040, "BorderColor")
SetGadgetDataInteger(result, 2, "BorderSize")
DrawCanvasButton(result)
BindEvent(#PB_Event_Gadget, @EventHandler_CanvasButton(), 0, result, #PB_All)
EndProcedure
Procedure Main()
Protected event, color
Protected *property.string
If OpenWindow(0, #PB_Ignore, #PB_Ignore, 600, 400, "Advanced Gadget Functions - GadgetData")
CanvasButton(0, 10, 10, 200, 40, "Button 0")
CanvasButton(1, 220, 10, 200, 40, "Button 1")
StringGadget(2, 10, 60, 200, 25, "Button 0")
StringGadget(3, 220, 60, 200, 25, "Button 1")
SpinGadget(4, 10, 95, 50, 25, 0, 4, #PB_Spin_Numeric)
SpinGadget(5, 220, 95, 50, 25, 0, 4, #PB_Spin_Numeric)
SetGadgetState(4, 2)
SetGadgetState(5, 2)
EndIf
EnableGadgetDataEvent(#True)
Repeat
event = WaitWindowEvent()
Select event
Case #PB_Event_CloseWindow
Break
Case #PB_Event_Gadget
Select EventGadget()
Case 0
Select EventType()
Case #PB_EventType_LeftClick
color = ColorRequester(GetGadgetDataInteger(0, "BackColor"))
SetGadgetDataInteger(0, color, "BackColor")
EndSelect
Case 1
Select EventType()
Case #PB_EventType_LeftClick
color = ColorRequester(GetGadgetDataInteger(1, "FrontColor"))
SetGadgetDataInteger(1, color, "FrontColor")
EndSelect
Case 2
Select EventType()
Case #PB_EventType_Change
SetGadgetDataString(0, GetGadgetText(2), "Text")
EndSelect
Case 3
Select EventType()
Case #PB_EventType_Change
SetGadgetDataString(1, GetGadgetText(3), "Text")
EndSelect
Case 4
Select EventType()
Case #PB_EventType_Change
SetGadgetDataInteger(0, GetGadgetState(4), "BorderSize")
EndSelect
Case 5
Select EventType()
Case #PB_EventType_Change
SetGadgetDataInteger(1, GetGadgetState(5), "BorderSize")
EndSelect
EndSelect
EndSelect
ForEver
EndProcedure : Main()