Code: Select all
Procedure ResizeSplitter()
#PB_EventType_SizeSplitter = #PB_EventType_SizeItem
Static MouseMoveX, MouseMoveY
Protected FirstGadget, SecondGadget, SplitterGadget = EventGadget()
Protected Left, Top, Right, Bottom, MouseX, MouseY, Window = GetActiveWindow();EventWindow()
If IsGadget(SplitterGadget) And GadgetType(SplitterGadget) = #PB_GadgetType_Splitter And IsWindow(Window)
FirstGadget = GetGadgetAttribute(SplitterGadget, #PB_Splitter_FirstGadget)
SecondGadget = GetGadgetAttribute(SplitterGadget, #PB_Splitter_SecondGadget)
If (IsGadget(FirstGadget) And IsGadget(SecondGadget))
MouseX = DesktopMouseX()
MouseY = DesktopMouseY()
Left = (GadgetX(FirstGadget,#PB_Gadget_ScreenCoordinate)+GadgetWidth(FirstGadget))
Top = (GadgetY(FirstGadget,#PB_Gadget_ScreenCoordinate)+GadgetHeight(FirstGadget))
Right = GadgetX(SecondGadget,#PB_Gadget_ScreenCoordinate)
Bottom = GadgetY(SecondGadget,#PB_Gadget_ScreenCoordinate)
If (MouseX >= Left And MouseX <= Right) Or
(MouseY >= Top And MouseY <= Bottom)
If ((MouseX <>-1 And MouseY <>-1) And
((MouseMoveX <> MouseX) Or (MouseMoveY <> MouseY)))
MouseMoveX = MouseX
MouseMoveY = MouseY
PostEvent(#PB_Event_Gadget,Window,SplitterGadget,#PB_EventType_SizeSplitter)
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
RedrawWindow_(WindowID(Window),0,0,#RDW_UPDATENOW);#RDW_ALLCHILDREN|
CompilerEndIf
EndIf
EndIf
EndIf
EndIf
EndProcedure
ProcedureDLL SplitterGadgetEx(SplitterName,GadgetFirst=-1,GadgetSecond=-1,x=0,y=0,w=0,h=0,FirstMinimumSize=0,SecondMinimumSize=0,SpliterPosition=-1,Flag=0,MinSize = 0);#PB_Splitter_Vertical)
;
If GadgetType(GadgetFirst)=#PB_GadgetType_Splitter
If GadgetType(GetGadgetAttribute(GadgetFirst,#PB_Splitter_FirstGadget))=#PB_GadgetType_Splitter
Protected FirstSpliterPosition=GetGadgetState(GadgetFirst)
EndIf
If Flag & #PB_Splitter_SecondFixed
If Flag & #PB_Splitter_Vertical
SpliterPosition=((GadgetWidth(GetGadgetAttribute(GadgetFirst,#PB_Splitter_SecondGadget))+GetGadgetState(GadgetFirst))-SpliterPosition)
FirstMinimumSize=4+(GadgetWidth(GetGadgetAttribute(GadgetFirst,#PB_Splitter_FirstGadget)))+FirstMinimumSize
Else
SpliterPosition=SpliterPosition+4
EndIf
EndIf
Else
If Not ((Flag & #PB_Splitter_FirstFixed) Or (Flag & #PB_Splitter_SecondFixed))
If SpliterPosition>=0 :SpliterPosition=FirstMinimumSize+SpliterPosition+4 :EndIf
EndIf
EndIf
;
SplitterNameID = SplitterGadget(SplitterName, x,y,w,h, GadgetFirst, GadgetSecond, Flag)
If SplitterName =-1 :SplitterName = SplitterNameID :EndIf
;
SetGadgetAttribute(SplitterName,#PB_Splitter_FirstMinimumSize,FirstMinimumSize)
SetGadgetAttribute(SplitterName,#PB_Splitter_SecondMinimumSize,SecondMinimumSize)
SetGadgetState(SplitterName, SpliterPosition)
If GadgetType(GadgetFirst)=#PB_GadgetType_Splitter
If GadgetType(GetGadgetAttribute(GadgetFirst,#PB_Splitter_FirstGadget))=#PB_GadgetType_Splitter
SetGadgetState(GadgetFirst, FirstSpliterPosition)
EndIf
EndIf
BindGadgetEvent(SplitterName,@ResizeSplitter())
ProcedureReturn SplitterNameID
EndProcedure
Global Splitter_Six,code,Form
Procedure Resize()
If IsGadget(Splitter_Six)
ResizeGadget(Splitter_Six,#PB_Ignore,#PB_Ignore,WindowWidth(EventWindow())-10,WindowHeight(EventWindow())-10)
EndIf
CompilerIf #PB_Compiler_OS = #PB_OS_Windows
RedrawWindow_(WindowID(0),0,0,#RDW_UPDATENOW)
CompilerEndIf
EndProcedure
Procedure ResizePanel()
;If EventType() = #PB_EventType_SizeSplitter
ResizeGadget(Code,0,0,GetGadgetAttribute(15, #PB_Panel_ItemWidth),GetGadgetAttribute(15, #PB_Panel_ItemHeight))
; EndIf
EndProcedure
If OpenWindow(0, 0, 0, 630, 380, "SplitterGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered|#PB_Window_SizeGadget|#PB_Window_Invisible)
SmartWindowRefresh(0, 1)
WindowBounds(0,550,300,-1,-1)
TextGadget(2, 0, 0, 0, 0, "Здесь будет подсказка к аплетам программы",#PB_Text_Border)
ListViewGadget(1, 0, 0, 0, 0);, "Button 5")
For a = 1 To 12
AddGadgetItem (1, -1, "Item " + Str(a) + " of the Listview") ; define listview content
Next
SetGadgetState(1, 2) ; set (beginning with 0) the tenth item as the active one
ButtonGadget(3, 0, 0, 0, 0, "Button 3")
TextGadget(4, 0, 0, 0, 0, "Здесь будет подсказка к функциям программы",#PB_Text_Border)
Panel = PanelGadget(15,x,y,w,h)
AddGadgetItem(15,-1,"Code")
Code = ListIconGadget(#PB_Any,x,y,w,h,"" ,1,Flag)
AddGadgetItem(15,-1,"Form")
Form = ContainerGadget(#PB_Any,10,10,200,100,#PB_Container_Flat)
ButtonGadget(13, 30, 10, 70, 20, "Button 13")
CloseGadgetList()
CloseGadgetList()
ListViewGadget(6, 0, 0, 0, 0);, "Button 5")
For a = 1 To 12
AddGadgetItem (6, -1, "Item " + Str(a) + " of the Listview") ; define listview content
Next
SetGadgetState(6, 2) ; set (beginning with 0) the tenth item as the active one
ContainerGadget(7, 0, 0, 0, 0, #PB_Container_Flat)
CloseGadgetList()
x=5
y=5
w=(WindowWidth(0)-x*2)
h=(WindowHeight(0)-y*2)
Splitter_First = SplitterGadgetEx(#PB_Any,1,2, x, y, w, h,200,40,0,#PB_Splitter_SecondFixed)
Splitter_Second = SplitterGadgetEx(#PB_Any,15,6, x, y, w, h,200,40,0,#PB_Splitter_SecondFixed)
Splitter_Thread = SplitterGadgetEx(#PB_Any,3,4, x, y, w, h,200,40,0,#PB_Splitter_SecondFixed)
Splitter_Four = SplitterGadgetEx(#PB_Any,Splitter_First,Splitter_Second, x, y, w, h,50,350,100,#PB_Splitter_Vertical|#PB_Splitter_FirstFixed)
Splitter_Five = SplitterGadgetEx(#PB_Any,Splitter_Four,Splitter_Thread, x, y, w, h,350,50,100,#PB_Splitter_Vertical|#PB_Splitter_SecondFixed)
Splitter_Six = SplitterGadgetEx(#PB_Any,7,Splitter_Five, x, y, w, h,24,100,-1)
BindEvent(#PB_Event_Gadget,@ResizePanel())
BindEvent(#PB_Event_SizeWindow,@Resize())
HideWindow(0,0)
Repeat
Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
; IDE Options = PureBasic 5.22 LTS (Linux - x86)
; CursorPosition = 148
; FirstLine = 59
; Folding = m+-8-
; EnableUnicode
; EnableXP