Positionnement dans Dialog

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
pls
Messages : 21
Inscription : mer. 26/févr./2020 17:21

Positionnement dans Dialog

Message 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.
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Re: Positionnement dans Dialog

Message par SPH »

Les boutons NOUVEAU SUPPRIMER ENREGISTRER et QUITTER ?

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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
pls
Messages : 21
Inscription : mer. 26/févr./2020 17:21

Re: Positionnement dans Dialog

Message 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.
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Re: Positionnement dans Dialog

Message par SPH »

Pas là non plus...

Je passe la main 8)

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
pls
Messages : 21
Inscription : mer. 26/févr./2020 17:21

Re: Positionnement dans Dialog

Message 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.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Positionnement dans Dialog

Message 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... :?
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
pls
Messages : 21
Inscription : mer. 26/févr./2020 17:21

Re: Positionnement dans Dialog

Message 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.
Avatar de l’utilisateur
TazNormand
Messages : 1297
Inscription : ven. 27/oct./2006 12:19
Localisation : Calvados (14)

Re: Positionnement dans Dialog

Message 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)
Image
Image
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Positionnement dans Dialog

Message 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)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Patrick88
Messages : 1564
Inscription : mer. 21/janv./2004 18:24

Re: Positionnement dans Dialog

Message 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
Mesa
Messages : 1126
Inscription : mer. 14/sept./2011 16:59

Re: Positionnement dans Dialog

Message 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.
pls
Messages : 21
Inscription : mer. 26/févr./2020 17:21

Re: Positionnement dans Dialog

Message par pls »

Merci à vous tous, c'est top.
Pleins de solutions ;)
Répondre