PureBasic

Forums PureBasic
Nous sommes le Mar 25/Juin/2019 19:14

Heures au format UTC + 1 heure




Poster un nouveau sujet Répondre au sujet  [ 1 message ] 
Auteur Message
 Sujet du message: Panel Personnalisé avec splitter
MessagePosté: Lun 06/Mar/2017 1:02 
En ligne

Inscription: Mer 04/Nov/2015 17:39
Messages: 993
Salut, voilà si ça peut servir à d'autres 8)
Code:
; 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:")

_________________
Processeur: Intel Core I7-4790 - 4 Cœurs - 8 Thread: 3.60 Ghz.
Ram: 32 GB.
Disque: C: SDD 250 GB, D: 3 TB.
Vidéo: NVIDIA GeForce GTX 960: 2 GB DDR5.
Écran: Asus VX248 24 Pouces: 1920 x 1080.
Système: Windows 7 64 Bits.

PureBasic: 5.60 x64 Bits.


Haut
 Profil  
Répondre en citant le message  
Afficher les messages postés depuis:  Trier par  
Poster un nouveau sujet Répondre au sujet  [ 1 message ] 

Heures au format UTC + 1 heure


Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités


Vous ne pouvez pas poster de nouveaux sujets
Vous ne pouvez pas répondre aux sujets
Vous ne pouvez pas éditer vos messages
Vous ne pouvez pas supprimer vos messages

Rechercher:
Aller à:  

 


Powered by phpBB © 2008 phpBB Group | Traduction par: phpBB-fr.com
subSilver+ theme by Canver Software, sponsor Sanal Modifiye