WidgetSetBorder

Syntax

Success = WidgetSetBorder(Widget, Border)

Description

Assigns a pre-created border object (created with CreateBorder() or CreateBorderImg()) to the specified widget. This border will be drawn around the widget's content area during rendering.

Parameters

Widget
The handle of the ProGUI widget to which the border will be applied.

Border
The handle of the border object to assign. Set to #Null or 0 to remove any existing border.

Return Value

Returns #True if the border was successfully assigned, or #False if the widget handle was invalid.

Remarks

Setting a border programmatically overrides any border defined for the widget in the skin. The border is drawn between the widget's padding and its content/background. Setting a new border automatically triggers a redraw of the widget. The border object itself should be managed (created and potentially freed using FreeBorder()) separately by the application if it's not part of the skin system.

Example

IncludeFile "ProGUI_PB.pbi"

StartProGUI()

; Custom draw procedure
Procedure DrawBorderedWidget(Widget, EventType, *EventData.PG_EventDraw, *UserData)
  DrawBox(0, 0, *EventData\width, *EventData\height, RGB(220, 220, 240))
EndProcedure

MyWindow = CreateWindow(0, 0, 300, 200, "WidgetSetBorder Example")
RootLayout = WindowGetLayout(MyWindow)
LayoutSetPadding(RootLayout, 10)

If MyWindow
  ; Create a generated border
  MyGeneratedBorder = CreateBorder(#PG_Border_Groove, 5, 10, RGB(100, 100, 150))

  ; Create an image border (assuming images exist)
  ; BorderImg = LoadImg("border_image.png")
  ; BorderMask = LoadImg("border_mask.png")
  ; MyImageBorder = CreateBorderImg(BorderImg, BorderMask, 15, 15, 15, 15)

  Widget1 = CreateWidget(0, 0, 150, 60)
  WidgetSetMargin(Widget1, 5)
  WidgetSetBorder(Widget1, MyGeneratedBorder) ; Assign the generated border
  AddEventHandler(Widget1, #PG_Event_Draw, @DrawBorderedWidget())

  ; Widget2 = CreateWidget(0, 0, 150, 60)
  ; WidgetSetMargin(Widget2, 5)
  ; WidgetSetBorder(Widget2, MyImageBorder) ; Assign the image border
  ; AddEventHandler(Widget2, #PG_Event_Draw, @DrawBorderedWidget())

  WindowShow(MyWindow, #True, #PG_Window_ScreenCentered)

  Repeat
    Event = WaitWindowEvent()
  Until Event = #PB_Event_CloseWindow

  ; Clean up the borders we created
  FreeBorder(MyGeneratedBorder)
  ; FreeBorder(MyImageBorder)
  ; FreeImg(BorderImg)
  ; FreeImg(BorderMask)
EndIf

StopProGUI()

See Also

CreateBorder, CreateBorderImg, FreeBorder, DrawBorder, WidgetGetSkinBorder (for using skin-defined borders)

Supported OS

Windows, Linux