A basic 'starter':
Code: Select all
CompilerIf #PB_Compiler_IsMainFile
EnableExplicit
CompilerEndIf
Structure FlexStatusBarGadget_Structure
List FieldList.i()
EndStructure
Procedure.i FlexStatusBarGadget(Gadget.i, Height.i, ParentGadget.i)
Protected.i NewGadget, x, y, width
Protected *FlexStatusBarGadget.FlexStatusBarGadget_Structure
If IsGadget(ParentGadget)
x = GadgetX(ParentGadget)
y = GadgetY(ParentGadget) + GadgetHeight(ParentGadget)
width = GadgetWidth(ParentGadget)
NewGadget = CanvasGadget(Gadget, x, y, width, height, #PB_Canvas_Container|#PB_Canvas_Border)
If NewGadget
If Gadget <> #PB_Any
NewGadget = Gadget
EndIf
*FlexStatusBarGadget = AllocateStructure(FlexStatusBarGadget_Structure)
If *FlexStatusBarGadget
SetGadgetData(NewGadget, *FlexStatusBarGadget)
; If StartDrawing(CanvasOutput(NewGadget))
;
; StopDrawing()
; EndIf
EndIf
EndIf
EndIf
ProcedureReturn NewGadget
EndProcedure
Procedure.i AddFlexStatusBarField(Gadget.i, Width.i)
Protected.i x
Protected *FlexStatusBarGadget.FlexStatusBarGadget_Structure
If IsGadget(Gadget)
*FlexStatusBarGadget = GetGadgetData(Gadget)
OpenGadgetList(Gadget)
ForEach *FlexStatusBarGadget\FieldList()
x + GadgetWidth(*FlexStatusBarGadget\FieldList())
Next
AddElement(*FlexStatusBarGadget\FieldList())
*FlexStatusBarGadget\FieldList() = TextGadget(#PB_Any, x, 0, Width, GadgetHeight(Gadget) - 4, "", #PB_Text_Border)
CloseGadgetList()
EndIf
ProcedureReturn 0
EndProcedure
Procedure.i FlexStatusBarText(Gadget.i, Field.i, Text$)
Protected *FlexStatusBarGadget.FlexStatusBarGadget_Structure
If IsGadget(Gadget)
*FlexStatusBarGadget = GetGadgetData(Gadget)
If SelectElement(*FlexStatusBarGadget\FieldList(), Field)
SetGadgetText(*FlexStatusBarGadget\FieldList(), Text$)
EndIf
EndIf
ProcedureReturn 0
EndProcedure
CompilerIf #PB_Compiler_IsMainFile
OpenWindow(0, 0, 0, 400, 300, "Demo", #PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ListViewGadget(0, 10, 10, 200, 200)
FlexStatusBarGadget(1, 25, 0)
AddFlexStatusBarField(1, 50)
AddFlexStatusBarField(1, 80)
FlexStatusBarText(1, 0, "Test")
FlexStatusBarText(1, 1, "Test2")
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
CompilerEndIf