Create Resizible Form with SplitterGadget

Just starting out? Need help? Post your questions and find answers here.
Rjevsky
User
User
Posts: 23
Joined: Tue Jul 18, 2017 3:41 pm

Create Resizible Form with SplitterGadget

Post by Rjevsky »

How to make a form with a panel, like in FormDesigner from my code?

Code: Select all

Enumeration FormGadget
  #Panel_0
  #ListIcon_0
  #ListIcon_1
  #ListIcon_2
  #Splitter_0
EndEnumeration


Procedure WinCallback(hWnd, uMsg, WParam, LParam) 
  Select uMsg
    Case #WM_SIZE 
      width = WindowWidth(0)
      height=WindowHeight(0)
      Select WParam 
        Case #SIZE_MINIMIZED 
         ; Debug "Window was minimized" 
        Case #SIZE_RESTORED, #SIZE_MAXIMIZED 
          ResizeGadget(#ListIcon_1,#PB_Ignore,#PB_Ignore,width,height-26)
          ResizeGadget(#ListIcon_2,#PB_Ignore,#PB_Ignore,width,height-26)
          ResizeGadget(#Splitter_0,#PB_Ignore,#PB_Ignore,width+420,height+1)

      EndSelect 
      EndSelect
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure 



Define x = 0, y = 0, width = 840, height = 530
  OpenWindow(0, x, y, width, height, "", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
  PanelGadget(#Panel_0, 0, 0, 0, 0)
  AddGadgetItem(#Panel_0, -1, "Tab 1")
  ListIconGadget(#ListIcon_1,0, 0, 260, height-26,"test",100, #PB_ListIcon_ThreeState | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect )
  AddGadgetItem(#Panel_0, -1, "Tab 2")
  ListIconGadget(#ListIcon_2,0, 0, 260, height-26,"test",100, #PB_ListIcon_ThreeState | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
  CloseGadgetList()
  ListIconGadget(#ListIcon_0, 0, 0, width, height,"test",100, #PB_ListIcon_ThreeState | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
  SplitterGadget(#Splitter_0, 0, 0, width+420,height+1,#ListIcon_0,#Panel_0, #PB_Splitter_Vertical | #PB_Splitter_SecondFixed)

SetWindowCallback(@WinCallback())
Repeat
  Event = WaitWindowEvent()
  Select event
    Case #PB_Event_CloseWindow
      EventQuit = #True
  EndSelect
 
Until EventQuit = #True
(code changed)
Last edited by Rjevsky on Thu Dec 14, 2017 1:25 pm, edited 1 time in total.
Rjevsky
User
User
Posts: 23
Joined: Tue Jul 18, 2017 3:41 pm

Re: Create Resizible Form with SplitterGadget

Post by Rjevsky »

it seems it's a victory!

Code: Select all

Enumeration FormGadget
  #Panel_0
  #ListIcon_0
  #ListIcon_1
  #ListIcon_2
  #Splitter_0
EndEnumeration


Procedure WinCallback(hWnd, uMsg, WParam, LParam) 
  Select uMsg
    Case #WM_SIZE 
      width = WindowWidth(0)
      height=WindowHeight(0)
  ;    GadgetHeight
      Select WParam 
        Case #SIZE_MINIMIZED 
         ; Debug "Window was minimized" 
        Case #SIZE_RESTORED, #SIZE_MAXIMIZED 
          ResizeGadget(#ListIcon_1,#PB_Ignore,#PB_Ignore,GadgetWidth(#Panel_0)-6,GadgetHeight(#Panel_0)-27)
          ResizeGadget(#ListIcon_2,#PB_Ignore,#PB_Ignore,GadgetWidth(#Panel_0)-6,GadgetHeight(#Panel_0)-27)
          ResizeGadget(#Splitter_0,#PB_Ignore,#PB_Ignore,width,height)
      EndSelect 
      EndSelect
  ProcedureReturn #PB_ProcessPureBasicEvents
EndProcedure 



Define x = 0, y = 0, width = 840, height = 530
  OpenWindow(0, x, y, width, height, "", #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_ScreenCentered)
  PanelGadget(#Panel_0, 0, 0, 0, 0)
  AddGadgetItem(#Panel_0, -1, "Tab 1")
  ListIconGadget(#ListIcon_1,0, 0, 259, height-27,"test1",100, #PB_ListIcon_ThreeState | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect )
  AddGadgetItem(#Panel_0, -1, "Tab 2")
  ListIconGadget(#ListIcon_2,0, 0, 259, height-27,"test2",100, #PB_ListIcon_ThreeState | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
  CloseGadgetList()
  ListIconGadget(#ListIcon_0, 0, 0, width, height-30,"test",100, #PB_ListIcon_ThreeState | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect)
  SplitterGadget(#Splitter_0, 0, 0, width,height,#ListIcon_0,#Panel_0, #PB_Splitter_Vertical | #PB_Splitter_SecondFixed)

  SetGadgetState(#Splitter_0, 569)
  

SetWindowCallback(@WinCallback())
Repeat
  Event = WaitWindowEvent()
  Select event
    Case #PB_Event_CloseWindow
      EventQuit = #True
  EndSelect
 
Until EventQuit = #True
Post Reply