Merci, je ne connaissais pas encore l'editorGadget - En apprentissage
Et voici le code très inspiré de la formation Udemy.
Par contre comment je peux utiliser ce gadget dans mon XML (desc_app, fonc_app) ?
Code : Tout sélectionner
Module app_fic
EnableExplicit
; variables communes
Global form_id ; identifiant fenêtre non accessible de l'exterieur
Global xml
Global dialog_id ; fenetre qui s'appelle dialog
Global gMotherWindow
; Variable propre à la fenetre
Global gCurrentRecord, bt_validate, bt_cancel, lib_app, desc_app, fonc_app
Procedure makeXml()
Protected title.s = "Nouvelle application"
If gCurrentRecord
title = "Fiche application"
EndIf
Protected text.s = "<window name = 'form' width = '600' "+
" text = "+Chr(34)+title+Chr(34)+
" flags = '#PB_Window_SystemMenu|#PB_Window_WindowCentered'>"+
" <vbox expand = 'item:1'>"+
" <vbox>"+
" <frame text = 'Nom'>"+
" <string name = 'lib_app' />"+
" </frame>"+
" <frame text = 'Description'>"+
" <string name = 'desc_app' height = '100'/>"+
" </frame>"+
" <frame text = 'Description'>"+
" <string name = 'fonc_app' height = '150' />"+
" </frame>"+
" </vbox>"+
" <hbox expand = 'no' width ='100'>"+
" <button text = 'Valider' name = 'bt_validate'/>"+
" <button text = 'Annuler' name = 'bt_cancel'/>"+
" </hbox>"+
" </vbox>"+
"</window>"
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
; Validation enregistrement
Procedure validate()
Debug "Validation"
EndProcedure
; Remplissage du record en mode edit
Procedure fillRecord()
If app::find(gCurrentRecord)
SetGadgetText(lib_app, app::lib_app)
SetGadgetText(desc_app, app::desc_app)
SetGadgetText(fonc_app, app::fonc_app)
EndIf
EndProcedure
Procedure open(motherWindow, currentRecord = 0)
Protected font = LoadFont(#PB_Any, "Arial", 10, #PB_Font_HighQuality)
gMotherWindow = motherWindow
gCurrentRecord = currentRecord
If makeXml()
dialog_id = CreateDialog(#PB_Any)
If dialog_id
SetGadgetFont(#PB_Default, FontID(font))
If OpenXMLDialog(dialog_id, xml,"form",0,0,0,0, WindowID(motherWindow))
; Désactiver le fenêtre mère
DisableWindow(gMotherWindow,#True)
; Charge les ID des gadgets
form_id = DialogWindow(dialog_id)
bt_validate = DialogGadget(dialog_id, "bt_validate")
bt_cancel = DialogGadget(dialog_id, "bt_cancel")
lib_app = DialogGadget(dialog_id, "lib_app")
desc_app = DialogGadget(dialog_id, "desc_app")
fonc_app = DialogGadget(dialog_id, "fonc_app")
; Remplir les champs en mode edit
If gCurrentRecord
fillRecord()
EndIf
; Mise en place des callBack
BindEvent(#PB_Event_CloseWindow, @exit(),form_id)
BindGadgetEvent(bt_validate, @validate())
BindGadgetEvent(bt_cancel, @exit())
EndIf
EndIf
EndIf
EndProcedure
EndModule