Code : Tout sélectionner
; Code créer par Mr Dieppedalle David le 06/03/2017.
;{ Enumeration
Enumeration
#Fenetre
#ContainerFenetre
#BoutonAfficherTree1
#BoutonAfficherTree2
#SplitterFenetre
#Tree1
#Tree2
#TexteInfoEditeur
#Editeur
EndEnumeration
;}
; Prcocedure permettant d'activer ou de desactiver le theme XP.
Procedure SetActiveXP(Gadget.l, Value.b)
If Value=#True
SetWindowTheme_(GadgetID(Gadget), @" ", @" ")
Else
SetWindowTheme_(GadgetID(Gadget), 0, 0)
EndIf
EndProcedure
; Procedure pour savoir si la souris est sur un gadget.
Procedure.l IsMouseOverGadget(Gadget)
GetWindowRect_(GadgetID(Gadget),GadgetRect.RECT)
GetCursorPos_(mouse.POINT)
If mouse\x>=GadgetRect\Left And mouse\x<=GadgetRect\right And mouse\y>=GadgetRect\Top And mouse\y<=GadgetRect\bottom
ProcedureReturn #True
Else
ProcedureReturn #False
EndIf
EndProcedure
EnableExplicit
Procedure OuvrirFenetre(TitreEditeur$, TexteInfoEditeur$ = "")
Define OngletTreeAfficher.i = 1
Define SliderCapturer.b = #False
OpenWindow(#Fenetre, 0, 0, 600, 400, TitreEditeur$, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered)
WindowBounds(#Fenetre, 500, 400, #PB_Ignore, #PB_Ignore)
ContainerGadget(#ContainerFenetre, 0, 0, 600, 400, #PB_Container_Flat)
ButtonGadget(#BoutonAfficherTree1, 2, 2, 60, 22, "Onglet 1")
ButtonGadget(#BoutonAfficherTree2, 61, 2, 65, 22, "Onglet 2")
SetWindowLong_(GadgetID(#BoutonAfficherTree1), #GWL_STYLE, #BS_FLAT | GetWindowLong_(GadgetID(#BoutonAfficherTree1), #GWL_STYLE))
SetWindowLong_(GadgetID(#BoutonAfficherTree2), #GWL_STYLE, #BS_FLAT | GetWindowLong_(GadgetID(#BoutonAfficherTree2), #GWL_STYLE))
SetActiveXP(#BoutonAfficherTree1, #True)
SetActiveXP(#BoutonAfficherTree2, #True)
TreeGadget(#Tree1, 0, 0, 0, 0, #PB_Tree_AlwaysShowSelection)
AddGadgetItem(#Tree1, -1, "Onglet 1 Element n°1")
AddGadgetItem(#Tree1, -1, "Onglet 1 Element n°2")
AddGadgetItem(#Tree1, -1, "Onglet 1 Element n°3")
TreeGadget(#Tree2, 0, 0, 0, 0, #PB_Tree_AlwaysShowSelection)
AddGadgetItem(#Tree2, -1, "Onglet 2 Element n°1")
AddGadgetItem(#Tree2, -1, "Onglet 2 Element n°2")
AddGadgetItem(#Tree2, -1, "Onglet 2 Element n°3")
HideGadget(#Tree2, #True)
EditorGadget(#Editeur, 0, 0, 0, 0)
SplitterGadget(#SplitterFenetre, 2, 23, 594, 347, #Tree1, #Editeur, #PB_Splitter_Vertical | #PB_Splitter_Separator)
TextGadget(#TexteInfoEditeur, 0, 0, 0, 15, TexteInfoEditeur$, #PB_Text_Center)
CloseGadgetList()
SetGadgetAttribute(#SplitterFenetre, #PB_Splitter_FirstMinimumSize, 200)
SetGadgetAttribute(#SplitterFenetre, #PB_Splitter_SecondMinimumSize, WindowWidth(#Fenetre) - 300)
SetGadgetState(#SplitterFenetre, 0)
ResizeGadget(#TexteInfoEditeur, GadgetX(#Tree1) + GadgetWidth(#Tree1) + 10, 5, GadgetWidth(#Editeur), 15)
Repeat
Select WaitWindowEvent(1)
Case #PB_Event_SizeWindow
SetGadgetAttribute(#SplitterFenetre, #PB_Splitter_SecondMinimumSize, WindowWidth(#Fenetre) - 300)
ResizeGadget(#ContainerFenetre, 0, 0, WindowWidth(#Fenetre), WindowHeight(#Fenetre))
ResizeGadget(#SplitterFenetre, 2, 2, WindowWidth(#Fenetre) - 6, WindowHeight(#Fenetre) - 53)
If OngletTreeAfficher.i = 1
ResizeGadget(#TexteInfoEditeur, GadgetX(#Tree1) + GadgetWidth(#Tree1) + 10, 6, GadgetWidth(#Editeur), 15)
ElseIf OngletTreeAfficher.i = 2
ResizeGadget(#TexteInfoEditeur, GadgetX(#Tree2) + GadgetWidth(#Tree2) + 10, 6, GadgetWidth(#Editeur), 15)
EndIf
Case #PB_Event_Menu
Select EventMenu()
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case #BoutonAfficherTree1
If OngletTreeAfficher.i <> 1
OngletTreeAfficher.i = 1
HideGadget(#Tree1, #False)
HideGadget(#Tree2, #True)
SetGadgetAttribute(#SplitterFenetre, #PB_Splitter_FirstGadget, #Tree1)
EndIf
Case #BoutonAfficherTree2
If OngletTreeAfficher.i <> 2
OngletTreeAfficher.i = 2
HideGadget(#Tree1, #True)
HideGadget(#Tree2, #False)
SetGadgetAttribute(#SplitterFenetre, #PB_Splitter_FirstGadget, #Tree2)
EndIf
Case #SplitterFenetre
SetGadgetAttribute(#SplitterFenetre, #PB_Splitter_SecondMinimumSize, WindowWidth(#Fenetre) - 300)
ResizeGadget(#SplitterFenetre, 2, 23, WindowWidth(#Fenetre) - 6, WindowHeight(#Fenetre) - 53)
EndSelect
Case 513 ; Bouton gauche appuiler avec la souris sur la fenêtre.
If WindowMouseX(#Fenetre) >= GetGadgetState(#SplitterFenetre) - 3 And WindowMouseX(#Fenetre) <= GetGadgetState(#SplitterFenetre) + 9
SliderCapturer.b = #True
Else
SliderCapturer.b = #False
EndIf
Case 514 ; Bouton gauche relacher avec la souris sur la fenêtre.
If SliderCapturer.b = #True
SliderCapturer.b = #False
If OngletTreeAfficher.i = 1
FreeGadget(#TexteInfoEditeur)
TextGadget(#TexteInfoEditeur, 0, 0, 0, 15, TexteInfoEditeur$, #PB_Text_Center)
ResizeGadget(#TexteInfoEditeur, GadgetX(#Tree1) + GadgetWidth(#Tree1) + 10, 6, GadgetWidth(#Editeur), 15)
ElseIf OngletTreeAfficher.i = 2
FreeGadget(#TexteInfoEditeur)
TextGadget(#TexteInfoEditeur, 0, 0, 0, 15, TexteInfoEditeur$, #PB_Text_Center)
ResizeGadget(#TexteInfoEditeur, GadgetX(#Tree2) + GadgetWidth(#Tree2) + 10, 6, GadgetWidth(#Editeur), 15)
EndIf
EndIf
Case #PB_Event_CloseWindow
CloseWindow(#Fenetre)
Break
Default
EndSelect
ForEver
EndProcedure
OuvrirFenetre("Exemple Onglet personnalisé avec Splitter", "Veuillez entrer un texte:")