Page 1 sur 1

Comment mettre un séparateur horizontal entre 2 conteneurs

Publié : jeu. 24/août/2017 16:56
par Micoute
Bonjour à tous,

je souhaiterais mettre un séparateur entre 2 conteneurs, un pour la liste des éléments enregistrés e un second pour entrer les questions et réponses, donc quand je redimensionne la fenêtre, ça agit sur la dimension de la liste, mais j'aimerais mettre un SplitterGadget pour agir sur la dimension verticale du conteneur question et réponse, mais je ne sais pas comment régler les paramètres bien que l'aide soit bien expliquée, mais comme c'est un gadget que j'utilise peu, je ne le perçoit pas bien.

Si quelqu'un a la solution, je l'en remercierai jamais assez.

Code : Tout sélectionner

;Souviens-toi

Enumeration Fenetre
  #Fenetre_principale
EndEnumeration

Enumeration Gadgets
  #Cvs
  
  #Question
  #Reponse
  
  #Lst_Elements
  #Lst_Question
  #Lst_Reponse
  #Btn_Modifier_Question
  #Btn_Vider_Question
  #Btn_Modifier_Reponse
  #Btn_Vider_Reponse
  #Btn_Maj
  #Btn_Nouveau
  #Btn_Supprimer
  #Btn_Quitter
  #Ctn_Liste
  #Ctn_QuestRep
  #Ctn_Boutons
EndEnumeration

Enumeration Fichiers
  #FichierJSON
EndEnumeration

Enumeration Polices
  #Police
  #Police2
EndEnumeration

Structure Element
  Question.s  ;Question
  Reponse.s   ;Réponse à mémoriser
EndStructure  

Global NewList Elements.Element(), Evenement, Fichier.s = "D:\Programmation\Donnees\Souviens-toi.Json"

Declare Charger_Elements()
Declare GestionEvenements()
Declare Nouvel_Element()
Declare Selection_Element()
Declare Supprimer_Element()
Declare Maj_Element()
Declare Sauvegarder_Elements()
Declare Fenetre_Modification()
Declare Fenetre_principale()

UsePNGImageDecoder()

LoadFont(#Police, "Arial", 25, #PB_Font_Bold)
LoadFont(#Police2, "Arial", 15)

;Chargement des éléments existants
Procedure Charger_Elements()
  If ReadFile(#FichierJSON, Fichier)
    CloseFile(#FichierJSON)
    
    ;Lecture du fichier JSON
    LoadJSON(#FichierJSON, Fichier, #PB_JSON_NoCase)
    
    ;Extraction de le chaîne JSON vers la liste chaînée Elements
    ExtractJSONList(JSONValue(#FichierJSON), Elements())
    
    ;Affichage de la liste des éléments
    ForEach Elements()
      With Elements()
        AddGadgetItem(#Lst_Elements, -1, \Question + #LF$ + Space(Len(\Reponse)))
        SetGadgetItemData(#Lst_Elements, CountGadgetItems(#Lst_Elements) - 1, ListIndex(Elements()))
      EndWith
    Next
  EndIf  
EndProcedure

Procedure GestionEvenements()
  Protected Evenement = EventType()
  
  Select Evenement
    Case #PB_EventType_Change
      If Trim(GetGadgetText(#Question)) <> ""
        DisableGadget(#Btn_Nouveau, #False)
        DisableGadget(#Btn_Maj, #False)
      Else
        DisableGadget(#Btn_Nouveau, #True)
        DisableGadget(#Btn_Maj, #True)
      EndIf         
  EndSelect
EndProcedure

;Nouvel élément (raz des champs)
Procedure Nouvel_Element()
  SetWindowData(#Fenetre_principale, 0) ;C'est une création
  
  SetGadgetText(#Question, "")
  SetGadgetText(#Reponse, "")
  
  DisableGadget(#Btn_Nouveau, #True)
  DisableGadget(#Btn_Maj, #True)
  DisableGadget(#Btn_Supprimer, #True)
  
  SetGadgetText(#Btn_Maj, "Ajouter")
  SetActiveGadget(#Question)   
EndProcedure

;Une question est sélectionnée dans la liste
Procedure Selection_Element()
  Protected Item = GetGadgetState(#Lst_Elements)
  
  If Item <> -1
    SelectElement(Elements(), GetGadgetItemData(#Lst_Elements, Item))
    With Elements()
      SetGadgetText(#Question, \Question)
      SetGadgetText(#Reponse, \Reponse)
    EndWith
  EndIf
  
  ;C'est une modif
  SetWindowData(#Fenetre_principale, 1)
  
  DisableGadget(#Btn_Nouveau, #False)
  DisableGadget(#Btn_Maj, #False)
  DisableGadget(#Btn_Supprimer, #False)
  
  SetGadgetText(#Btn_Maj, "Modifier")
  SetActiveGadget(#Question)
EndProcedure

;Suppression d'une question
Procedure Supprimer_Element()
  If MessageRequester("Information", "Etes vous sûr de supprimer une question ?" + #CRLF$ + "cette action est irrémédiable !", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
    SetWindowData(#Fenetre_principale, 3) ;C'est une suppression
    Maj_Element()
  EndIf
EndProcedure

Procedure Maj_Element()
  ;Protected.s Etiquette = GetGadgetText(#Etiquette)
  Protected.s Question = GetGadgetText(#Question)
  Protected.s Reponse = GetGadgetText(#Reponse)
  
  Select GetWindowData(#Fenetre_principale)
    Case 0 ; Création
      AddElement(Elements())
      With Elements()
        \Question = Question
        \Reponse = Reponse
        AddGadgetItem(#Lst_Elements, -1, \Question + #LF$ + \Reponse)
        SetGadgetItemData(#Lst_Elements, CountGadgetItems(#Lst_Elements) - 1, ListIndex(Elements()))
      EndWith
      
    Case 1 ;Modif
      With Elements()
        \Question = Question
        \Reponse = Reponse
        
        SetGadgetItemText(#Lst_Elements, ListIndex(Elements()), \Question, 0)
        SetGadgetItemText(#Lst_Elements, ListIndex(Elements()), \Reponse, 1)
      EndWith
      Nouvel_Element()
      
    Case 3 ;Suppression
      RemoveGadgetItem(#Lst_Elements, ListIndex(Elements()))
      DeleteElement(Elements())
      
      ;Mise à jour de liaison ListIconGadget <-> Elements()
      ForEach Elements()
        SetGadgetItemData(#Lst_Elements, ListIndex(Elements()), ListIndex(Elements()))
      Next
    EndSelect  
EndProcedure

;Sauvegarde automatique à la fermeture de l(application
Procedure Sauvegarder_Elements()
  
  ;Création d'un objet JSON
  CreateJSON(#FichierJSON)
  
  ;insertion de la liste chaînée "Elements()" dans l'objet
  InsertJSONList(JSONValue(#FichierJSON), Elements())
  
  ;sauvegarde du fichier
  SaveJSON(#FichierJSON, Fichier, #PB_JSON_PrettyPrint)
  
  ;Libérer les données
  FreeJSON(#FichierJSON)
  
  ;Libérer la liste
  FreeList(Elements())
  
EndProcedure

Procedure Quitter()
  CloseWindow(#Fenetre_principale)
  Sauvegarder_Elements()
  End
EndProcedure

;Redimensionnement des questions
Procedure Redimensionner()
  If WindowHeight(#Fenetre_principale) > 180
    ResizeGadget(#cvs, #PB_Ignore, #PB_Ignore, WindowWidth(#Fenetre_principale), WindowHeight(#Fenetre_principale))
    ResizeGadget(#Ctn_Liste, (WindowWidth(#Fenetre_principale)-GadgetWidth(#Lst_Elements))/2, #PB_Ignore, #PB_Ignore, WindowHeight(#Fenetre_principale) - 390)
    ResizeGadget(#Lst_Elements, #PB_Ignore, #PB_Ignore, #PB_Ignore, GadgetHeight(#Ctn_Liste) - 25)
    
    ResizeGadget(#Ctn_QuestRep, #PB_Ignore, WindowHeight(#Fenetre_principale) - 390, WindowWidth(#Fenetre_principale), #PB_Ignore)
    ResizeGadget(#Question, #PB_Ignore, #PB_Ignore, (GadgetWidth(#Ctn_QuestRep)/2)-15, #PB_Ignore)
    ResizeGadget(#Reponse, GadgetWidth(#Ctn_QuestRep)/2, #PB_Ignore, (GadgetWidth(#Ctn_QuestRep)/2)-15, #PB_Ignore)
    
    ResizeGadget(#Ctn_Boutons, #PB_Ignore, WindowHeight(#Fenetre_principale) - 90, WindowWidth(#Fenetre_principale), #PB_Ignore)
    ResizeGadget(#Btn_Quitter, GadgetWidth(#Ctn_Boutons) - GadgetWidth(#Btn_Quitter) - 10, #PB_Ignore, #PB_Ignore, #PB_Ignore)
    ResizeGadget(#Btn_Supprimer, (GadgetWidth(#Ctn_Boutons) * 0.75) - GadgetWidth(#Btn_Supprimer) - 10, #PB_Ignore, #PB_Ignore, #PB_Ignore)
    ResizeGadget(#Btn_Nouveau, (GadgetWidth(#Ctn_Boutons) * 0.45) - GadgetWidth(#Btn_Nouveau) - 10, #PB_Ignore, #PB_Ignore, #PB_Ignore)
    ;Debug GadgetWidth(#Ctn_Boutons)
  EndIf  
EndProcedure

Procedure Fenetre_principale()
  If OpenWindow(#Fenetre_principale, 0, 0, 1270, 815, "Souviens-Toi", #PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
    WindowBounds(#Fenetre_principale, 1270, 460, #PB_Ignore, #PB_Ignore)
    
    CanvasGadget(#Cvs, 0, 0, 1270, 815, #PB_Canvas_Image|#PB_Canvas_Container)
    
      SetGadgetFont(#PB_Default, FontID(#Police))
    
      ContainerGadget(#Ctn_Liste, 310, 0, 650, 425, #PB_Container_Raised)
        ListIconGadget(#Lst_Elements, 10, 10, 625, 400, "Enoncé", 620, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines|#LVS_NOCOLUMNHEADER)
      CloseGadgetList()
    
      ContainerGadget(#Ctn_QuestRep, 0, 425, 1270, 300, #PB_Container_Raised)
        EditorGadget(#Question, 10, 10, 620, 275, #PB_Editor_WordWrap)
        EditorGadget(#Reponse, 635, 10, 620, 275, #PB_Editor_WordWrap)
      CloseGadgetList()    
    
      ContainerGadget(#Ctn_Boutons, 0, 725, 1270, 90)
        ButtonGadget(#Btn_Maj,        10, 30, 185, 40, "Ajouter")
        ButtonGadget(#Btn_Nouveau,   365, 30, 185, 40, "Nouveau")
        ButtonGadget(#Btn_Supprimer, 720, 30, 185, 40, "Supprimer")
        ButtonGadget(#Btn_Quitter,  1075, 30, 185, 40, "Quitter")
      CloseGadgetList()
    
      CloseGadgetList()
    
    SetGadgetFont(#Lst_Elements, FontID(#Police2))
    
    SetWindowColor(#Fenetre_principale, $EFC8C7)
    SetGadgetColor(#Ctn_Liste, #PB_Gadget_BackColor, $7EC821)
    SetGadgetColor(#Ctn_QuestRep, #PB_Gadget_BackColor, GetGadgetColor(#Ctn_Liste, #PB_Gadget_BackColor))
    SetGadgetColor(#Ctn_Boutons, #PB_Gadget_BackColor, GetWindowColor(#Fenetre_principale))
    
    ;Contrôle de la saisie
    BindGadgetEvent(#Question, @GestionEvenements())
    
    ;Mise en place d'une nouvelle question
    BindGadgetEvent(#Btn_Nouveau, @Nouvel_Element())
    
    ;Une question est sélectionnée
    BindGadgetEvent(#Lst_Elements, @Selection_Element())
    
    ;Ajout ou modification d'une question
    BindGadgetEvent(#Btn_Maj, @Maj_Element())
    
    ;Suppression d'une question
    BindGadgetEvent(#Btn_Supprimer, @Supprimer_Element())
    
    ;Fermeture de l'application et sauvegarde automatique
    BindGadgetEvent(#Btn_Quitter, @Quitter())
    
    BindEvent(#PB_Event_SizeWindow, @Redimensionner())
    
    Charger_Elements()
  EndIf
EndProcedure

Fenetre_principale()

;- Boucle
Repeat
  Evenement = WaitWindowEvent()
  Select Evenement
      
    Case #PB_Event_Gadget
      Select EventGadget()
      EndSelect
      
    Case #PB_Event_CloseWindow
      
      ;Fermeture de l'application avec sauvegarde automatique 
      Select EventWindow()
        Case #Fenetre_principale
          CloseWindow(#Fenetre_principale)
          Sauvegarder_Elements()
          Break 
      EndSelect
  EndSelect
ForEver


Re: Comment mettre un séparateur horizontal entre 2 conteneu

Publié : jeu. 24/août/2017 17:26
par Marc56
Bonjour Micoute,

Vaste programme, bravo 8)

Pour ton séparateur, je te propose d'ajouter

Ligne 239

Code : Tout sélectionner

SplitterGadget(#Split_QR, 0, 0, 1590, 724,  #Ctn_Liste, #Ctn_QuestRep)
C'est à dire juste après le container Q et R

Code : Tout sélectionner

      ContainerGadget(#Ctn_QuestRep, 0, 425, 1270, 300, #PB_Container_Raised)
        EditorGadget(#Question, 10, 10, 620, 275, #PB_Editor_WordWrap)
        EditorGadget(#Reponse, 635, 10, 620, 275, #PB_Editor_WordWrap)
      CloseGadgetList()   
   SplitterGadget(#Split_QR, 0, 0, 1590, 724,  #Ctn_Liste, #Ctn_QuestRep) ; <--- Ici
Avec bien sur la déclaration dans les énumeration par exemple ligne 9

Code : Tout sélectionner

#Split_QR
J'ai fais ça vite fait: il faudra que tu ajuste les alignements et que tu ancre les deux fenêtres en bas

L'utilisation du splitter est simple:
- Le mettre après les deux objets qu'il englobe (gadgets ou containers)
- x, y et taille doivent englober les deux gadgets
- Spécifier les nom des deux objets
- Par défaut le splitter est horizontal.
- Ancrer les bords externes des gadgets

:wink:

Re: Comment mettre un séparateur horizontal entre 2 conteneu

Publié : jeu. 24/août/2017 17:39
par microdevweb
Bonjour Micoute,

Ci j'ai bien compris ta demande, voici un exemple

Code : Tout sélectionner

Enumeration 
  #Form
  #Cont1
  #Cont2
  #Spiter
  #Bt1
  #Bt2
EndEnumeration
OpenWindow(#Form,0,0,800,600,"Teste",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
; Inutile de rensigner la taille
ContainerGadget(#Cont1,0,0,0,0,#PB_Container_Double)
ButtonGadget(#Bt1,0,0,0,0,"BT 1")
;!!! ne pas oublier de fermer le gadgetlist
CloseGadgetList()
; Inutile de rensigner la taille
ContainerGadget(#Cont2,0,0,0,0,#PB_Container_Double)
ButtonGadget(#Bt1,0,0,0,0,"BT 2")
;!!! ne pas oublier de fermer le gadgetlist
CloseGadgetList()
; Dans ce cas même dimention que la fenêtre
SplitterGadget(#Spiter,5,5,800,600,#Cont1,#Cont2,#PB_Splitter_Vertical|#PB_Splitter_Separator)
SetGadgetState(#Spiter,400)

Repeat
  WaitWindowEvent() 
Until Event()=#PB_Event_CloseWindow

Re: Comment mettre un séparateur horizontal entre 2 conteneu

Publié : jeu. 24/août/2017 17:43
par Zorro

Code : Tout sélectionner

;Souviens-toi

Enumeration Fenetre
  #Fenetre_principale
EndEnumeration

Enumeration Gadgets
  #Cvs
 
  #Question
  #Reponse
 
  #Lst_Elements
  #Lst_Question
  #Lst_Reponse
  #Btn_Modifier_Question
  #Btn_Vider_Question
  #Btn_Modifier_Reponse
  #Btn_Vider_Reponse
  #Btn_Maj
  #Btn_Nouveau
  #Btn_Supprimer
  #Btn_Quitter
  #Ctn_Liste
  #Ctn_QuestRep
  #Ctn_Boutons
  #Spilt_H
   #Spilt_H2
  #Spilt_V
EndEnumeration

Enumeration Fichiers
  #FichierJSON
EndEnumeration

Enumeration Polices
  #Police
  #Police2
EndEnumeration

Structure Element
  Question.s  ;Question
  Reponse.s   ;Réponse à mémoriser
EndStructure 

Global NewList Elements.Element(), Evenement, Fichier.s = "D:\Programmation\Donnees\Souviens-toi.Json"

Declare Charger_Elements()
Declare GestionEvenements()
Declare Nouvel_Element()
Declare Selection_Element()
Declare Supprimer_Element()
Declare Maj_Element()
Declare Sauvegarder_Elements()
Declare Fenetre_Modification()
Declare Fenetre_principale()

UsePNGImageDecoder()

LoadFont(#Police, "Arial", 25, #PB_Font_Bold)
LoadFont(#Police2, "Arial", 15)

;Chargement des éléments existants
Procedure Charger_Elements()
  If ReadFile(#FichierJSON, Fichier)
    CloseFile(#FichierJSON)
   
    ;Lecture du fichier JSON
    LoadJSON(#FichierJSON, Fichier, #PB_JSON_NoCase)
   
    ;Extraction de le chaîne JSON vers la liste chaînée Elements
    ExtractJSONList(JSONValue(#FichierJSON), Elements())
   
    ;Affichage de la liste des éléments
    ForEach Elements()
      With Elements()
        AddGadgetItem(#Lst_Elements, -1, \Question + #LF$ + Space(Len(\Reponse)))
        SetGadgetItemData(#Lst_Elements, CountGadgetItems(#Lst_Elements) - 1, ListIndex(Elements()))
      EndWith
    Next
  EndIf 
EndProcedure

Procedure GestionEvenements()
  Protected Evenement = EventType()
 
  Select Evenement
    Case #PB_EventType_Change
      If Trim(GetGadgetText(#Question)) <> ""
        DisableGadget(#Btn_Nouveau, #False)
        DisableGadget(#Btn_Maj, #False)
      Else
        DisableGadget(#Btn_Nouveau, #True)
        DisableGadget(#Btn_Maj, #True)
      EndIf         
  EndSelect
EndProcedure

;Nouvel élément (raz des champs)
Procedure Nouvel_Element()
  SetWindowData(#Fenetre_principale, 0) ;C'est une création
 
  SetGadgetText(#Question, "")
  SetGadgetText(#Reponse, "")
 
  DisableGadget(#Btn_Nouveau, #True)
  DisableGadget(#Btn_Maj, #True)
  DisableGadget(#Btn_Supprimer, #True)
 
  SetGadgetText(#Btn_Maj, "Ajouter")
  SetActiveGadget(#Question)   
EndProcedure

;Une question est sélectionnée dans la liste
Procedure Selection_Element()
  Protected Item = GetGadgetState(#Lst_Elements)
 
  If Item <> -1
    SelectElement(Elements(), GetGadgetItemData(#Lst_Elements, Item))
    With Elements()
      SetGadgetText(#Question, \Question)
      SetGadgetText(#Reponse, \Reponse)
    EndWith
  EndIf
 
  ;C'est une modif
  SetWindowData(#Fenetre_principale, 1)
 
  DisableGadget(#Btn_Nouveau, #False)
  DisableGadget(#Btn_Maj, #False)
  DisableGadget(#Btn_Supprimer, #False)
 
  SetGadgetText(#Btn_Maj, "Modifier")
  SetActiveGadget(#Question)
EndProcedure

;Suppression d'une question
Procedure Supprimer_Element()
  If MessageRequester("Information", "Etes vous sûr de supprimer une question ?" + #CRLF$ + "cette action est irrémédiable !", #PB_MessageRequester_YesNo) = #PB_MessageRequester_Yes
    SetWindowData(#Fenetre_principale, 3) ;C'est une suppression
    Maj_Element()
  EndIf
EndProcedure

Procedure Maj_Element()
  ;Protected.s Etiquette = GetGadgetText(#Etiquette)
  Protected.s Question = GetGadgetText(#Question)
  Protected.s Reponse = GetGadgetText(#Reponse)
 
  Select GetWindowData(#Fenetre_principale)
    Case 0 ; Création
      AddElement(Elements())
      With Elements()
        \Question = Question
        \Reponse = Reponse
        AddGadgetItem(#Lst_Elements, -1, \Question + #LF$ + \Reponse)
        SetGadgetItemData(#Lst_Elements, CountGadgetItems(#Lst_Elements) - 1, ListIndex(Elements()))
      EndWith
     
    Case 1 ;Modif
      With Elements()
        \Question = Question
        \Reponse = Reponse
       
        SetGadgetItemText(#Lst_Elements, ListIndex(Elements()), \Question, 0)
        SetGadgetItemText(#Lst_Elements, ListIndex(Elements()), \Reponse, 1)
      EndWith
      Nouvel_Element()
     
    Case 3 ;Suppression
      RemoveGadgetItem(#Lst_Elements, ListIndex(Elements()))
      DeleteElement(Elements())
     
      ;Mise à jour de liaison ListIconGadget <-> Elements()
      ForEach Elements()
        SetGadgetItemData(#Lst_Elements, ListIndex(Elements()), ListIndex(Elements()))
      Next
    EndSelect 
EndProcedure

;Sauvegarde automatique à la fermeture de l(application
Procedure Sauvegarder_Elements()
 
  ;Création d'un objet JSON
  CreateJSON(#FichierJSON)
 
  ;insertion de la liste chaînée "Elements()" dans l'objet
  InsertJSONList(JSONValue(#FichierJSON), Elements())
 
  ;sauvegarde du fichier
  SaveJSON(#FichierJSON, Fichier, #PB_JSON_PrettyPrint)
 
  ;Libérer les données
  FreeJSON(#FichierJSON)
 
  ;Libérer la liste
  FreeList(Elements())
 
EndProcedure

Procedure Quitter()
  CloseWindow(#Fenetre_principale)
  Sauvegarder_Elements()
  End
EndProcedure

;Redimensionnement des questions
Procedure Redimensionner()
  If WindowHeight(#Fenetre_principale) > 180
    ResizeGadget(#cvs, #PB_Ignore, #PB_Ignore, WindowWidth(#Fenetre_principale), WindowHeight(#Fenetre_principale))
    ResizeGadget(#Ctn_Liste, (WindowWidth(#Fenetre_principale)-GadgetWidth(#Lst_Elements))/2, #PB_Ignore, #PB_Ignore, WindowHeight(#Fenetre_principale) - 390)
    ResizeGadget(#Lst_Elements, #PB_Ignore, #PB_Ignore, #PB_Ignore, GadgetHeight(#Ctn_Liste) - 25)
   
    ResizeGadget(#Ctn_QuestRep, #PB_Ignore, WindowHeight(#Fenetre_principale) - 390, WindowWidth(#Fenetre_principale), #PB_Ignore)
    ResizeGadget(#Question, #PB_Ignore, #PB_Ignore, (GadgetWidth(#Ctn_QuestRep)/2)-15, #PB_Ignore)
    ResizeGadget(#Reponse, GadgetWidth(#Ctn_QuestRep)/2, #PB_Ignore, (GadgetWidth(#Ctn_QuestRep)/2)-15, #PB_Ignore)
   
    ResizeGadget(#Ctn_Boutons, #PB_Ignore, WindowHeight(#Fenetre_principale) - 90, WindowWidth(#Fenetre_principale), #PB_Ignore)
    ResizeGadget(#Btn_Quitter, GadgetWidth(#Ctn_Boutons) - GadgetWidth(#Btn_Quitter) - 10, #PB_Ignore, #PB_Ignore, #PB_Ignore)
    ResizeGadget(#Btn_Supprimer, (GadgetWidth(#Ctn_Boutons) * 0.75) - GadgetWidth(#Btn_Supprimer) - 10, #PB_Ignore, #PB_Ignore, #PB_Ignore)
    ResizeGadget(#Btn_Nouveau, (GadgetWidth(#Ctn_Boutons) * 0.45) - GadgetWidth(#Btn_Nouveau) - 10, #PB_Ignore, #PB_Ignore, #PB_Ignore)
    ;Debug GadgetWidth(#Ctn_Boutons)
  EndIf 
EndProcedure

Procedure Fenetre_principale()
  If OpenWindow(#Fenetre_principale, 0, 0, 1270, 815, "Souviens-Toi", #PB_Window_BorderLess|#PB_Window_ScreenCentered|#PB_Window_SizeGadget)
    WindowBounds(#Fenetre_principale, 1270, 460, #PB_Ignore, #PB_Ignore)
   
    CanvasGadget(#Cvs, 0, 0, 1270, 815, #PB_Canvas_Image|#PB_Canvas_Container)
   
      SetGadgetFont(#PB_Default, FontID(#Police))
		
		ContainerGadget(#Ctn_QuestRep, 0, 425, 1270, 300, #PB_Container_Raised)
        EditorGadget(#Question, 10, 10, 620, 275, #PB_Editor_WordWrap)
        EditorGadget(#Reponse, 635, 10, 620, 275, #PB_Editor_WordWrap)			
		      	  	; *********************
		SplitterGadget(#Spilt_V, 0, 10, 1270, 815,#Question, #Reponse, #PB_Splitter_Vertical   ) 
   ; *********************************
      CloseGadgetList()   
		
   
      ContainerGadget(#Ctn_Liste, 310, 0, 650, 425, #PB_Container_Raised)
        ListIconGadget(#Lst_Elements, 10, 10, 625, 400, "Enoncé", 620, #PB_ListIcon_AlwaysShowSelection|#PB_ListIcon_FullRowSelect|#PB_ListIcon_GridLines|#LVS_NOCOLUMNHEADER)
      CloseGadgetList()
		;
		
    	; *********************
		SplitterGadget(#Spilt_H, 1, 0, 1270, 815,#Ctn_Liste, #Ctn_QuestRep) 
   ; *********************************
	
	
      ContainerGadget(#Ctn_Boutons, 0, 725, 1270, 90)
        ButtonGadget(#Btn_Maj,        10, 30, 185, 40, "Ajouter")
        ButtonGadget(#Btn_Nouveau,   365, 30, 185, 40, "Nouveau")
        ButtonGadget(#Btn_Supprimer, 720, 30, 185, 40, "Supprimer")
        ButtonGadget(#Btn_Quitter,  1075, 30, 185, 40, "Quitter")
		
      CloseGadgetList()
   	; *********************
		SplitterGadget(#Spilt_H2, 1, 0, 1270, 815,#Ctn_Boutons,#Spilt_H ,#PB_Splitter_FirstFixed ) 
		SetGadgetState(#Spilt_H2, 80)
   ; *********************************

     
	
   
   
    SetGadgetFont(#Lst_Elements, FontID(#Police2))
   
    SetWindowColor(#Fenetre_principale, $EFC8C7)
    SetGadgetColor(#Ctn_Liste, #PB_Gadget_BackColor, $7EC821)
    SetGadgetColor(#Ctn_QuestRep, #PB_Gadget_BackColor, GetGadgetColor(#Ctn_Liste, #PB_Gadget_BackColor))
    SetGadgetColor(#Ctn_Boutons, #PB_Gadget_BackColor, GetWindowColor(#Fenetre_principale))
   
    ;Contrôle de la saisie
    BindGadgetEvent(#Question, @GestionEvenements())
   
    ;Mise en place d'une nouvelle question
    BindGadgetEvent(#Btn_Nouveau, @Nouvel_Element())
   
    ;Une question est sélectionnée
    BindGadgetEvent(#Lst_Elements, @Selection_Element())
   
    ;Ajout ou modification d'une question
    BindGadgetEvent(#Btn_Maj, @Maj_Element())
   
    ;Suppression d'une question
    BindGadgetEvent(#Btn_Supprimer, @Supprimer_Element())
   
    ;Fermeture de l'application et sauvegarde automatique
    BindGadgetEvent(#Btn_Quitter, @Quitter())
   
    BindEvent(#PB_Event_SizeWindow, @Redimensionner())
   
    Charger_Elements()
  EndIf
EndProcedure

Fenetre_principale()

;- Boucle
Repeat
  Evenement = WaitWindowEvent()
  Select Evenement
     
    Case #PB_Event_Gadget
      Select EventGadget()
      EndSelect
     
    Case #PB_Event_CloseWindow
     
      ;Fermeture de l'application avec sauvegarde automatique
      Select EventWindow()
        Case #Fenetre_principale
          CloseWindow(#Fenetre_principale)
          Sauvegarder_Elements()
          Break
      EndSelect
  EndSelect
ForEver

Re: Comment mettre un séparateur horizontal entre 2 conteneu

Publié : jeu. 24/août/2017 17:48
par microdevweb
Autre exemple avec 2 spliter, il gèrer (ce que je n'ai pas fait) le redimensionnement du spliter interne

Code : Tout sélectionner

Enumeration 
  #Form
  #Cont1
  #Cont2
  #Cont1A
  #Cont1B
  #Spiter
  #Spliter2
  #Bt1
  #Bt2
EndEnumeration
OpenWindow(#Form,0,0,800,600,"Teste",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
; Inutile de rensigner la taille
ContainerGadget(#Cont1,0,0,0,0,#PB_Container_Double)
ContainerGadget(#Cont1A,0,0,0,0,#PB_Container_Double)
CloseGadgetList()
ContainerGadget(#Cont1B,0,0,0,0,#PB_Container_Double)
CloseGadgetList()
SplitterGadget(#Spliter2,5,5,400,600,#Cont1A,#Cont1B,#PB_Splitter_Separator)
;!!! ne pas oublier de fermer le gadgetlist
CloseGadgetList()
; Inutile de rensigner la taille
ContainerGadget(#Cont2,0,0,0,0,#PB_Container_Double)
ButtonGadget(#Bt1,0,0,0,0,"BT 2")
;!!! ne pas oublier de fermer le gadgetlist
CloseGadgetList()

; Dans ce cas même dimention que la fenêtre
SplitterGadget(#Spiter,5,5,800,600,#Cont1,#Cont2,#PB_Splitter_Vertical|#PB_Splitter_Separator)
SetGadgetState(#Spiter,400)
SetGadgetState(#Spliter2,200)
Repeat
  WaitWindowEvent() 
Until Event()=#PB_Event_CloseWindow

Re: Comment mettre un séparateur horizontal entre 2 conteneu

Publié : jeu. 24/août/2017 17:50
par microdevweb
@Zorro,
Chouette code

Note:
C'est fait à la vas vite et je n'utilise généralement pas les énumérations mais #Pb_Any.

Re: Comment mettre un séparateur horizontal entre 2 conteneu

Publié : jeu. 24/août/2017 19:55
par Micoute
Merci infiniment Zorro, ton code est sublimissime