Page 1 sur 1

Positionnement dans Dialog

Publié : dim. 10/mai/2020 21:18
par pls
Bonjour,

Une petite question sur les dialog.
J’essaie de positionner les 4 boutons en bas de la fenêtre mais sans succès.

Code : Tout sélectionner

  Procedure makeXml()
    Protected text.s = "<window name='form' flags='#PB_Window_SystemMenu|#PB_Window_ScreenCentered' text='Application métier'>"+
                       " <hbox name='principal'>"+
                       "  <vbox name = 'list' width='150' >"+
                       "   <listicon name = 'list_appmet' height = '300' text = 'Liste'/>" +
                       "  </vbox>"+    
                       "  <vbox name='vbox1' expand = 'no'>"+
                       "    <vbox name='vbox2'>"+
                       "     <hbox name='hbox1'>"+
                       "        <text name='text1' text='000' dd2variable='yes'/>"+
                       "        <string name='string1' text='string1' width='150' dd2events='yes'/>"+
                       "     </hbox>"+
                       "      <text name='text3' text='Description' width='200' dd2variable='yes'/>"+
                       "      <editor name='editor3' flags='#PB_Editor_WordWrap' height='80' dd2events='yes'/>"+
                       "      <empty name='empty1'/>"+
                       "    </vbox>"+
                       "    <vbox align='bottom' expand='item:1'>"+
                       "      <hbox name='hbox2' align='bottom/left'>"+
                       "       <button name='button1' text='Nouveau' dd2events='yes'/>"+
                       "       <button name='button2' text='Supprimer' dd2events='yes'/>"+
                       "       <button name='button3' text='Enregistrer' dd2events='yes'/>"+
                       "       <button name='button4' text='Quitter' dd2events='yes'/>"+
                       "      </hbox>"+
                       "    </vbox>"+
                       "  </vbox>"+
                       " </hbox>"+
                       "</window>"
    ; création de la fenêtre
    xml = CatchXML(#PB_Any, @text, StringByteLength(text))
    ProcedureReturn xml
  EndProcedure
Image

Auriez vous une idée par hasard ?

Merci d'avance.

Re: Positionnement dans Dialog

Publié : dim. 10/mai/2020 21:36
par SPH
Les boutons NOUVEAU SUPPRIMER ENREGISTRER et QUITTER ?

Si oui, tu ne donnes pas la bonne partie de ton code :idea:

Re: Positionnement dans Dialog

Publié : dim. 10/mai/2020 21:40
par pls
Oui ce sont bien ces 4 boutons :

Code : Tout sélectionner

DeclareModule VIEW_AppMet
  Declare open(motherWindow,mode_select = #False)
EndDeclareModule

Module VIEW_AppMet
  Global form_id        ; Identifiant fenetre
  Global table_id       ; Liste de notre table
  Global select_mode.b  ; Mode d'ouverture de la fenetre
  Global xml            ; Conteneur xml
  Global list_appmet
  Global dialog_id      ; car il s'agit d'une fenetre qui s'appele un dialog
  
  Procedure makeXml()
    Protected text.s = "<window name='form' flags='#PB_Window_SystemMenu|#PB_Window_ScreenCentered' text='Application métier'>"+
                       " <hbox name='principal'>"+
                       "  <vbox name = 'list' width='150' >"+
                       "   <listicon name = 'list_appmet' height = '300' text = 'Liste'/>" +
                       "  </vbox>"+    
                       "  <vbox name='vbox1' expand = 'no'>"+
                       "    <vbox name='vbox2'>"+
                       "     <hbox name='hbox1'>"+
                       "        <text name='text1' text='000' dd2variable='yes'/>"+
                       "        <string name='string1' text='string1' width='150' dd2events='yes'/>"+
                       "     </hbox>"+
                       "      <text name='text3' text='Description' width='200' dd2variable='yes'/>"+
                       "      <editor name='editor3' flags='#PB_Editor_WordWrap' height='80' dd2events='yes'/>"+
                       "      <empty name='empty1'/>"+
                       "    </vbox>"+
                       "    <vbox align='bottom' expand='item:1'>"+
                       "      <hbox name='hbox2' align='bottom/left'>"+
                       "       <button name='button1' text='Nouveau' dd2events='yes'/>"+
                       "       <button name='button2' text='Supprimer' dd2events='yes'/>"+
                       "       <button name='button3' text='Enregistrer' dd2events='yes'/>"+
                       "       <button name='button4' text='Quitter' dd2events='yes'/>"+
                       "      </hbox>"+
                       "    </vbox>"+
                       "  </vbox>"+
                       " </hbox>"+
                       "</window>"
    ; création de la fenêtre
    xml = CatchXML(#PB_Any, @text, StringByteLength(text))
    ProcedureReturn xml
  EndProcedure
  
  Procedure exit()
    ; ferme la fenêtre
    CloseWindow(form_id)
    ; réactive la fenêtre mère et lui rend le focus
    DisableWindow(gMotherWindow,#False)
    SetActiveWindow(gMotherWindow)
  EndProcedure
  
  Procedure fillAppmet()
    DATA_AppMet::loadAppMet()
    While DATA_AppMet::nextRecord()
      AddGadgetItem(list_appmet, -1,  DATA_AppMet::T_LIB_APP_MET +" ("+Str(DATA_AppMet::T_CODE_APP_MET)+")")     
    Wend
  EndProcedure
  
  Procedure open(motherWindow,mode_select = #False)
    gMotherWindow = motherWindow
    If makeXml()
      dialog_id = CreateDialog(#PB_Any)
      If dialog_id
        
        If OpenXMLDialog(dialog_id, xml, "form",0,0,0,0,WindowID(gMotherWindow))
          DisableWindow(gMotherWindow,#True)
          
          form_id = DialogWindow(dialog_id)
          btn_quit = DialogGadget(dialog_id, "btn_quit")
          list_appmet = DialogGadget(dialog_id, "list_appmet")
          
          fillAppmet()
          
          ; Mise en place des callback
          BindEvent(#PB_Event_CloseWindow, @exit())
          
        EndIf  
      EndIf          
    EndIf
  EndProcedure
  
EndModule
C'est la partie View du code. Pour la partie base de données, ca fonctionne correctement.

Merci.

Re: Positionnement dans Dialog

Publié : dim. 10/mai/2020 21:45
par SPH
Pas là non plus...

Je passe la main 8)

Re: Positionnement dans Dialog

Publié : dim. 10/mai/2020 21:51
par pls
Ben ça ne se passe pas dans le XML ?
J'ai pas encore connecté les boutons, pour le moment je suis sur la présentation.

Re: Positionnement dans Dialog

Publié : dim. 10/mai/2020 23:00
par Ar-S
Je suppose que tu as in intérêt particulier à créer une GUI via XML ?
J'avoue que je n'y connais rien là dedans.
J'ai l'impression les éléments se positionnent les uns sous les autres.
Si c'est le cas, soit tu ajoute un genre de boite vide de HauteurManquante-HauteurBouton, soit tu agrandis le height='80' de ton editor.

Attends peut être d'autres réponses... :?

Re: Positionnement dans Dialog

Publié : lun. 11/mai/2020 7:59
par pls
Merci pour ta réponse, je vais faire ça.
Ça n'est vraiment pas un problème bloquant mais c'est plus joli pour la présentation.

Pour le XML, j'ai bien compris que ça permet de faire des fenêtres dont les gadgets se repositionnent si on change les dimensions.

Re: Positionnement dans Dialog

Publié : lun. 11/mai/2020 13:10
par TazNormand
Salut

à priori, les GUI faites via XML (hors PB) utiliseraient les flexbox (cf ce topic sur StackOverflow)

Ne touchant pas à PB et aux XMLDialog, peux-tu voir si tu peux comme conseillé dans le topic StackOverflow utiliser l'attribut "align-items: flex-end;" (cf : CSS-tricks.com)

Re: Positionnement dans Dialog

Publié : lun. 11/mai/2020 16:37
par Ar-S
pls a écrit :Pour le XML, j'ai bien compris que ça permet de faire des fenêtres dont les gadgets se repositionnent si on change les dimensions.
Si ce n'est que ça regarde cet excellent code de guillot
Autant faire ta GUI en PB, ce sera bien moins contraignant. 8)

Re: Positionnement dans Dialog

Publié : mar. 12/mai/2020 9:08
par Patrick88
Pas besoin de t'embêter a comprendure, HeX0R sur le forum anglais a posté un éditeur de boite de dialogue XML, https://www.purebasic.fr/english/viewto ... g+Design0R

sur sa page web, tu trouveras le lien de téléchargement (tout en bas de la page) https://hex0rs.coderbu.de/dialogdesign0r

Pat

Re: Positionnement dans Dialog

Publié : mar. 12/mai/2020 10:36
par Mesa

Code : Tout sélectionner

;  XML$ = "<?xml version='1.0' encoding='UTF-8'?>" +

;  XML$ = "<dialogs>" +
#Dialog = 0
#Xml = 0
XML$ = "<window id='#PB_Any' name='test' text='titre' minwidth='640' minheight='480' flags='#PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_SizeGadget'>" +
       "     <hbox name='principal'>" +
       "       <vbox width='150' expand='item:1' name='List'>" +
       "         <listicon text='liste' name='list_appmet'/>" +
       "       </vbox>" +
       "       <vbox expand='item:3'>" +
       "         <hbox>" +
       "           <text text='000' name='text_1'/>" +
       "           <string text='string1' width='150' name='string_1'/>" +
       "         </hbox>" +
       "         <text text='Description' width='200' name='text_2'/>" +
       "         <editor height='80' flags='#PB_Editor_WordWrap' name='editor_1'/>" +
       "         <empty/>" +
       "         <hbox>" +
       "           <button text='Nouveau' name='button_1'/>" +
       "           <button text='Supprimer' name='button_2'/>" +
       "           <button text='Enregistrer' name='button_3'/>" +
       "           <button text='Quitter' name='button_4'/>" +
       "         </hbox>" +
       "       </vbox>" +
       "     </hbox>" +
       "   </window>"
; "   </dialogs>" +<!--DDesign0R Definition: PureBasic|0|0-->" +


If ParseXML(#Xml, XML$) And XMLStatus(#Xml) = #PB_XML_Success
  
  If CreateDialog(#Dialog) And OpenXMLDialog(#Dialog, #Xml, "test")
    
    Repeat
      Event = WaitWindowEvent()
    Until Event = #PB_Event_CloseWindow 
    
  Else  
    Debug "Erreur de la bibliothèque -Dialog- : " + DialogError(#Dialog)
  EndIf
Else
  Debug "Erreur XML : " + XMLError(#Xml) + " (Ligne: " + XMLErrorLine(#Xml) + ")"
EndIf

M.

Re: Positionnement dans Dialog

Publié : mar. 12/mai/2020 15:59
par pls
Merci à vous tous, c'est top.
Pleins de solutions ;)