Code: Select all
;/ === CustomFrameModule [PB 5.6x] ===
;/ Custom frame gadget
;/ October 2017 by Dude
DeclareModule CustomFrame
Declare.i Gadget(GadgetID.i, X.i, Y.i, Width.i, Height.i, Text$, FontID=#PB_Ignore)
Declare SetColor(GadgetID.i, Color.i)
Declare SetText(GadgetID.i, Text$)
EndDeclareModule
Module CustomFrame
EnableExplicit
Structure TextStructure
ID.i
X.i
Y.i
Font.i
EndStructure
Global NewMap Text.TextStructure()
Procedure.i Gadget(GadgetID.i, X.i, Y.i, Width.i, Height.i, Text$, FontID=#PB_Ignore)
Define.i GId, GadgetH, GadgetW
If FontID <> #PB_Ignore : SetGadgetFont(#PB_Default, FontID) : EndIf
GId = TextGadget(#PB_Any, 0, 0, 0, 0, Text$)
If GId
GadgetW = GadgetWidth(GId, #PB_Gadget_RequiredSize)
GadgetH = GadgetHeight(GId, #PB_Gadget_RequiredSize)
FreeGadget(GId)
EndIf
FrameGadget(GadgetID, X, Y, Width, Height, " ")
GId = TextGadget(#PB_Any, X+10, Y, GadgetW+1, GadgetH, Text$)
If GId
AddMapElement(Text(), Str(GadgetID))
Text()\ID = GId
Text()\X = X+10
Text()\Y = Y
Text()\Font = FontID
EndIf
If FontID <> #PB_Ignore : SetGadgetFont(#PB_Default, #PB_Default) : EndIf
ProcedureReturn GId
EndProcedure
Procedure SetColor(GadgetID.i, Color.i)
Define GID$ = Str(GadgetID)
SetGadgetColor(Text(GID$)\ID, #PB_Gadget_FrontColor, Color)
EndProcedure
Procedure SetText(GadgetID.i, Text$)
Define GId.i, GadgetH, GadgetW, GID$ = Str(GadgetID)
If Text(GID$)\Font <> #PB_Ignore : SetGadgetFont(#PB_Default, Text(GID$)\Font) : EndIf
GId = TextGadget(#PB_Any, 0, 0, 0, 0, Text$)
If GId
GadgetW = GadgetWidth(GId, #PB_Gadget_RequiredSize)
GadgetH = GadgetHeight(GId, #PB_Gadget_RequiredSize)
FreeGadget(GId)
EndIf
GId = Text(GID$)\ID
ResizeGadget(GId, Text(GID$)\X, Text(GID$)\Y, GadgetW+1, GadgetH)
SetGadgetText(GId, Text$)
If Text(GID$)\Font <> #PB_Ignore : SetGadgetFont(#PB_Default, #PB_Default) : EndIf
EndProcedure
EndModule
CompilerIf #PB_Compiler_IsMainFile
#Panel = 0
#Frame1 = 1
#Frame2 = 2
If OpenWindow(0,200,200,420,150,"Window",#PB_Window_SystemMenu)
If PanelGadget(#Panel, 10, 10, 210, 130)
AddGadgetItem(#Panel, -1, "Panel")
CustomFrame::Gadget(#Frame1, 10, 10, 180, 85, "Blue", FontID(LoadFont(#PB_Any, "MV Boli", 18, 256)))
CustomFrame::SetColor(#Frame1, #Blue)
CloseGadgetList()
EndIf
CustomFrame::Gadget(#Frame2, 230, 23, 180, 118, "Red")
CustomFrame::SetColor(#Frame2, #Red)
MessageRequester("CustomFrameModule", "Change color and text.", #PB_MessageRequester_Ok)
CustomFrame::SetText(#Frame1, "New Text")
CustomFrame::SetColor(#Frame2, #Green)
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
CompilerEndIf
Changed: CustomFrame::Gadget(GadgetID.i, X.i, Y.i, Width.i, Height.i, Text$, FontID=#PB_Ignore)