IF I want to assign the bounds of one gadget to another, do I have to do
x = MyGadget(#PB_Any, GetX(y), GetY(y), GetWidth(y), GetHeight(y))
or is there a shorter way?
GetBounds?
GetBounds?
PB 5.73 on Windows 10 & OS X High Sierra
Re: GetBounds?
Don't know if you mean something like this:
Bernd
Code: Select all
Enumeration
#Right
#Bottom
#Left
#Top
EndEnumeration
Procedure PlaceGadgetRelativeToGadget(Gadget.i, ReferenceGadget.i, Dir.i=#Right, Offset.i=0)
Select Dir
Case #Right
ResizeGadget(Gadget, GadgetX(ReferenceGadget) + GadgetWidth(ReferenceGadget) + Offset, GadgetY(ReferenceGadget), #PB_Ignore, #PB_Ignore)
Case #Bottom
ResizeGadget(Gadget, GadgetX(ReferenceGadget), GadgetY(ReferenceGadget) + GadgetHeight(ReferenceGadget) + Offset, #PB_Ignore, #PB_Ignore)
Case #Left
ResizeGadget(Gadget, GadgetX(ReferenceGadget) - GadgetWidth(Gadget) - Offset, GadgetY(ReferenceGadget), #PB_Ignore, #PB_Ignore)
Case #Top
ResizeGadget(Gadget, GadgetX(ReferenceGadget), GadgetY(ReferenceGadget) - GadgetHeight(Gadget) - Offset, #PB_Ignore, #PB_Ignore)
EndSelect
EndProcedure
If OpenWindow(0, 100, 200, 250, 300, "PureBasic Window", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget)
StringGadget(0, 100, 50, 50, 20, "")
SetGadgetColor(0, #PB_Gadget_BackColor, $0000FF)
StringGadget(1, 0, 0, 50, 20, "Right")
PlaceGadgetRelativeToGadget(1, 0, #Right)
StringGadget(2, 0, 0, 50, 20, "Bottom")
PlaceGadgetRelativeToGadget(2, 0, #Bottom)
StringGadget(3, 0, 0, 50, 20, "Left")
PlaceGadgetRelativeToGadget(3, 0, #Left)
StringGadget(4, 0, 0, 50, 20, "Top")
PlaceGadgetRelativeToGadget(4, 0, #Top)
StringGadget(10, 100, 150, 50, 20, "")
SetGadgetColor(10, #PB_Gadget_BackColor, $0000FF)
StringGadget(11, 0, 0, 50, 20, "Right")
PlaceGadgetRelativeToGadget(11, 10, #Right, 10)
StringGadget(12, 0, 0, 50, 20, "Bottom")
PlaceGadgetRelativeToGadget(12, 10, #Bottom, 10)
StringGadget(13, 0, 0, 50, 20, "Left")
PlaceGadgetRelativeToGadget(13, 10, #Left, 10)
StringGadget(14, 0, 0, 50, 20, "Top")
PlaceGadgetRelativeToGadget(14, 10, #Top, 10)
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_CloseWindow ; If the user has pressed on the close button
Quit = 1
EndIf
Until Quit = 1
EndIf