Note, if Win API is used, PB returns an incorrect value for the tab bar height.
Code: Select all
Enumeration
#Win
#Txt
#Panel
#Font16R
EndEnumeration
LoadFont(#Font16R, "Arial", 16, #PB_Font_HighQuality)
Declare Win()
Declare Wait()
Declare ResizeGdgs()
Procedure Win()
;#-------------
If OpenWindow(#Win, 0, 0, 600, 400, "Multi-Row Tabs", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_SizeGadget)
TextGadget(#Txt, 5, 5, 300, 20, "")
PanelGadget(#Panel, 0, 30, 600, 370)
SetWindowLongPtr_(GadgetID(#Panel), #GWL_STYLE, GetWindowLongPtr_(GadgetID(#Panel), #GWL_STYLE) | #TCS_MULTILINE)
SetGadgetFont(#Panel, FontID(#Font16R))
AddGadgetItem(#Panel, -1, "Tab 0000")
AddGadgetItem(#Panel, -1, "Tab 0001")
AddGadgetItem(#Panel, -1, "Tab 0002")
AddGadgetItem(#Panel, -1, "Tab 0003")
AddGadgetItem(#Panel, -1, "Tab 0004")
AddGadgetItem(#Panel, -1, "Tab 0005")
AddGadgetItem(#Panel, -1, "Tab 0006")
AddGadgetItem(#Panel, -1, "Tab 0007")
AddGadgetItem(#Panel, -1, "Tab 0008")
AddGadgetItem(#Panel, -1, "Tab 0009")
AddGadgetItem(#Panel, -1, "Tab 0010")
AddGadgetItem(#Panel, -1, "Tab 0011")
AddGadgetItem(#Panel, -1, "Tab 0012")
AddGadgetItem(#Panel, -1, "Tab 0013")
AddGadgetItem(#Panel, -1, "Tab 0014")
AddGadgetItem(#Panel, -1, "Tab 0015")
AddGadgetItem(#Panel, -1, "Tab 0016")
AddGadgetItem(#Panel, -1, "Tab 0017")
AddGadgetItem(#Panel, -1, "Tab 0018")
AddGadgetItem(#Panel, -1, "Tab 0019")
AddGadgetItem(#Panel, -1, "Tab 0020")
AddGadgetItem(#Panel, -1, "Tab 0021")
AddGadgetItem(#Panel, -1, "Tab 0022")
AddGadgetItem(#Panel, -1, "Tab 0023")
AddGadgetItem(#Panel, -1, "Tab 0024")
CloseGadgetList()
EndIf
EndProcedure
Procedure ResizeGdgs()
;#--------------------
Protected iWinW.i, iWinH.i, iPbTabH.i, iApiTabH.i, iApiRows.i, rTabSize.RECT
iWinW = WindowWidth(#Win)
iWinH = WindowHeight(#Win)
ResizeGadget(#Panel, 0, 30, iWinW, iWinH - 30)
SendMessage_(GadgetID(#Panel), #TCM_GETITEMRECT, 0, rTabSize)
iApiRows = SendMessage_(GadgetID(#Panel), #TCM_GETROWCOUNT, 0, 0)
iPbTabH = GetGadgetAttribute(#Panel, #PB_Panel_TabHeight)
iApiTabH = (rTabSize\Bottom - rTabSize\Top) * iApiRows
SetGadgetText(#Txt, "Pb Tab Hgt: " + Str(iPbTabH) + " Api Tab Hgt: " + Str(iApiTabH))
EndProcedure
Procedure Wait()
;#--------------
Protected iExit.i = #False
Repeat
Select WaitWindowEvent(1)
Case #PB_Event_SizeWindow: ResizeGdgs()
Case #PB_Event_CloseWindow: iExit = #True
EndSelect
Until iExit = #True
EndProcedure
Win()
Wait()
End