Hi there,
My implementation of the code:
Code: Select all
Enumeration
#AppendFrameTitle_Prefix
#AppendFrameTitle_Suffix
EndEnumeration
Procedure.i AppendFrameTitle(GadgetID.i, Text$, Color.l, Flag.l = #AppendFrameTitle_Prefix)
Protected.l x = GadgetX(GadgetID) + DesktopUnscaledX(9), y = GadgetY(GadgetID)
Protected.l w, h, sx
Protected.i tmpGadgetID, NewGadgetID
Protected OriginalText$ = GetGadgetText(GadgetID)
tmpGadgetID = TextGadget(#PB_Any, 0, 0, 0, 0, Text$)
w = GadgetWidth(tmpGadgetID, #PB_Gadget_RequiredSize) - DesktopUnscaledX(2)
h = GadgetHeight(tmpGadgetID, #PB_Gadget_RequiredSize)
FreeGadget(tmpGadgetID)
tmpGadgetID = TextGadget(#PB_Any, 0, 0, 0, 0, OriginalText$)
sx = GadgetWidth(tmpGadgetID, #PB_Gadget_RequiredSize) + x - DesktopUnscaledX(2)
FreeGadget(tmpGadgetID)
Select Flag
Case #AppendFrameTitle_Suffix
SetGadgetText(GadgetID, OriginalText$ + Text$)
NewGadgetID = TextGadget(#PB_Any, sx, y, w, h, Text$)
Default
SetGadgetText(GadgetID, Text$ + OriginalText$)
NewGadgetID = TextGadget(#PB_Any, x, y, w, h, Text$)
EndSelect
SetGadgetColor(NewGadgetID, #PB_Gadget_FrontColor, Color)
ProcedureReturn NewGadgetID
EndProcedure
CompilerIf #PB_Compiler_IsMainFile
OpenWindow(0,100,100,200,245,"Window", #PB_Window_SystemMenu)
For gadget = 0 To 1
FrameGadget(gadget, 5, 5 + gadget * 120, 190, 115,"Frame Window #" + gadget)
Next
AppendFrameTitle(0, "Prefix ", #Red)
AppendFrameTitle(1, " Suffix", #Red, #AppendFrameTitle_Suffix)
Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow
CompilerEndIf
It should produce the following output:
If anyone has suggestions for improvements, please feel free to add.
Kind regards,
Francis