mk-soft wrote:
How to get subViews from CanvasGadget
Off course there's no guarantee PB internals will stay the same but at the moment
PB_CanvasView contains
PB_NSFlippedView contains
PBButtonGadgetView
So it's the subviews of the subview you are looking for.
Code:
Procedure.i GetSubviews(View, Array Subviews.i(1))
Protected sv = CocoaMessage(0, View, "subviews")
Protected r.NSRange\length = CocoaMessage(0, sv, "count")
If r\length
ReDim Subviews(r\length - 1)
CocoaMessage(0, sv, "getObjects:", @Subviews(0), "range:@", @r)
EndIf
ProcedureReturn r\length
EndProcedure
If OpenWindow(0, 0, 0, 220, 220, "Canvas container example", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget)
CanvasGadget(0, 10, 10, 200, 200, #PB_Canvas_Container)
ButtonGadget(1, 10, 10, 80, 30, "Button 1")
ButtonGadget(2, 10, 40, 80, 30, "Button 2")
CloseGadgetList()
Dim Subviews.i(0)
Count = GetSubviews(GadgetID(0), Subviews()); Count = 1
Count = GetSubviews(Subviews(0), Subviews()); Count = 2 (Button 1 & 2)
For i = 0 To Count - 1
Debug Subviews(i); Output equal to GadgetID(1) and GadgetID(2)
Next
Repeat
Event = WaitWindowEvent()
Until Event = #PB_Event_CloseWindow
EndIf