Search this site
Embedded Files
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
Mon BBC SDL pas à pas
  • Accueil
  • BBC BASIC
  • BBC OS
  • BBC MODULES
  • RUBRIQUES
  • LIENS
  • More
    • Accueil
    • BBC BASIC
    • BBC OS
    • BBC MODULES
    • RUBRIQUES
    • LIENS

⇨ MENU ⇨ BIBLIOTHEQUE

dlglib.bbc

DESCRIPTION.


Le module dlglib.bbc propose des procédures et des fonctions permettant de créer et de contrôler des boites de dialogue et des controles d'interface graphique autonomes.




SYNTAXE.


INSTALL @lib$ + "dlglib.bbc"




REMARQUES.


Le module dlglib.bbc permet de créer facilement des interfaces graphique utilisateur (GUI) simples sous forme de boites de dialogue, pour construire des applications interactives, sans avoir à programmer toute la gestion graphique manuellement. il s'appuie sur les possibilités graphiques due BBC BASIC et s’intègre aisément aux programmes existants.


Le module dlglib.bbc perùet de créer des boites de dialogues personnalisées contenant : 

- des boutons cliquables ;

- des cases à cocher ;

- des groupes d'options ;

- des champs de saisies ;

- des étiquettes ;

- des listes fixes de sélections ;

- des liste déroulantes de sélections.


Les boites de dialogue adaptent automatiquement leur taille en fonction de celle de la fonte de caractères par défaut. Il est donc important de sélectionner la police courante avant d'invoquer la fonction FN_newdialog(). Voir l'instruction OSCLI pour charger et utiliser une police de caractères. 



1. Déclarer chaque nouvelle boite de dialogue, en spécifiant sa taille et son titre, avec la fonction FN_newdialog(). L'exemple suivant déclare la création d'une boite de dialogue, de nature indéterminée, de 160 x 60 unités et qui aura pour titre : Ma boite de dialogue. Les détails des paramètres et autres particularités des procédures et fonctions de la bibliothèque dlglib.bbc, seront précisés dans leurs fiches respectives.

INSTALL @lib$ + "dlglib.bbc"

DLG_Test = FN_newdialog( "Test ..." , 160 , 60 )



2. Créer les controles, widgets, qui seront contenus dans la boite de dialogue. Chaque controle doit recevoir un identifiant, troisième paramètre, sous la forme d'un nombre entier. Les identifiant de 1 à 11, doivent être réservés aux boutons cliquables, car ils permettent de fermer la boite de dialogue, en retournant la valeur de l'identifiant. Les controles devant effectuer une action spécifique doivent faire référence à une adresse mémoire où est stockée la définition d'une procédure.

PROC_static( DLG_Test , "Ceci est un test" , 101 , 10 , 10 , 140 , 10 , 1 ) : REM - etiquette d'information

PROC_button( DLG_Test , "Au revoir." , 1 , 10 , 30 , 40 , 15 , 1 ) : REM - Bouton OK fermant la fenetre (identifiant = 1)

PROC_button( DLG_Test , "A bientot." , 8 , 60 , 30 , 40 , 15 , 1 ) : REM - Bouton CLOSE fermant la fenetre (identifiant = 8)

PROC_button( DLG_Test , "Bonjour." , FN_setproc( PROC_Action() ) , 110 , 30 , 40 , 15 , 1 ) : REM - Bouton invoquant une procedure



3. Définir les procédures qui seront appelées par un controle. Rappel : les définitions multilignes de procédures, doivent être faite en fin de script après l'instruction END ou QUIT, afin que les instructions qu'elles contiennent ne soient pas exécutées par mégarde par le programme.

      DEF PROC_Action( Qboite , Qbouton ) : PRINT "Bonjour le monde ..." : ENDPROC



4. Activer la boite de dialogue dans la fenêtre de sortie du BBC BASIC en précisant sa position et quelle variable recevra l'identifiant du controle sollicité. Bien que la création de la boîte de dialogue et des controles qui la constitue ne doivent être faite qu'une seule fois, Elle pourra être appelée, à des position différentes si besoin, autant que nécessaire pour le programme.

kcontrole = FN_showdialog( DLG_Test , 100 , 500 )  



5. Exécuter l'action prévu en fonction d'un bouton de sortie cliqué, c'est-à-dire un des bouton ayant un identifiant entre 1 et 11. 

CASE kcontrole OF

WHEN 1 : PRINT "Au revoir le monde."

WHEN 8 : PRINT "A bientot le monde."

ENDCASE



6. Fermer la boite de dialogue. Note : Une boite de dialogue ne doit jamais être fermée dans une procédure personnalisée, surtout si son appel est associé à une action sur un controle de cette boite de dialogue, mais toujours en cliquant sur un bouton ayant un identifiant compris entre 1 et 11 : 1 pour Valider ; 2 pour Annuler ou 8 pour fermer en général.

PROC_closedialog( DLG_Test ) 



Note : une boite de dialogue affichée doit également être effacée si le programme revient en mode d'exécution immédiate à la suite d'une instruction END, QUIT, RUN, CHAIN, CLEAR ou si une erreur interrompt le programme et le ferme. Il est donc important de créer des gestionnaires d'événements en début de script qui appellera la procédure  en cas de défaillance, par exemple avec :

ON CLOSE PROC_closedialog( boite ) : QUIT

ON ERROR PROC_closedialog( boite ) : PRINT REPORT$ : END



Voir le module editbox.bbc qui permet d'ajouter et de gérer un éditeur de texte multilignes dans une boite de dialogue.

Voir le module filedlg.bbc qui permet d'ajouter et de gérer un explorateur de fichier dans une boite de dialogue.

Voir le module msgbox.bbc qui permet d'afficher des boites de dialogue formatés.



Le module doit être chargé depuis votre programme à l'aide de l'instruction : INSTALL @lib$ + "dlglib.bbc"




LISTE DES PROCEDURES DU MODULE.


FN_getcomboboxselect() : retourne l'index de la sélection d'une liste déroulante de sélections.

FN_getdlgitemtext() : retourne le contenu, l'intitulé ou l'étiquette d'un controle.

FN_getlistboxselect() : retourne l'index de la sélection d'une liste fixe de sélections.

FN_getlistboxselectnext() : retourne l'index de la sélection suivante d'une liste fixe à sélections multiples.

FN_gettrackbarpos() : retourne la position d'une échelle de valeurs.

FN_isdlgitemchecked() : retourne l'état d'une case à cocher.

FN_newdialog() : déclare la création d'une nouvelle boite de dialogue vide.

FN_polldialog() : affiche les controles d'une boite de dialogue dans la fenêtre de sortie du BBC BASIC.

FN_setproc() : définit la procédure à exécuter quand l'utilisateur clique sur un des controles.

FN_showdialog() : affiche une boite de dialogue.

FN_showdialogex() : affiche une boite de dialogue en modifiant le style sombre / clair.

PROC_button() : crée un bouton cliquable et le place dans sa boite de dialogue.

PROC_checkbox() : crée une case à option et le place dans sa boite de dialogue.

PROC_checkdlgitem() : modifie l'état d'une case à cocher.

PROC_closedialog() : efface une boite de dialogue de l'écran sans la détruire de la mémoire.

PROC_combobox() : crée une liste déroulante de choix et le place dans sa boite de dialogue.

PROC_enabledlgitem() : modifie le statut, actif ou inactif, d'un controle.

PROC_groupbox() : dessine un rectangle dans une boite de dialogue.

PROC_listbox() : crée une liste fixe de choix et le place dans sa boite de dialogue.

PROC_radiobutton() : crée une case à choix dans un groupe de choix et le place dans sa boite de dialogue.

PROC_refreshdialog() : rafraichit une boites de dialogue en actualisant le contenu des ses controles. 

PROC_registerdlgcallback() : définit la fonction de surveillance lors de l'affichage des boites de dialogue.

PROC_setcomboboxarray() : modifie le contenu d'une liste déroulante de sélections.

PROC_setcomboboxselect() : sélectionne un élément dans une liste déroulante de sélections.

PROC_setdialogpalette() : définit le style visuel par défaut de l'affichage des boites de dialogue.

PROC_setdlgitemtext() : modifie le contenu d'un controle.

PROC_setlistboxarray() : modifie le contenu d'une liste fixe de sélections.

PROC_setlistboxselect() : sélectionne un élément dans une liste fixe de sélections.

PROC_showdlgitem() : cache ou affiche un controle.

PROC_static() : crée une étiquette et le place dans sa boite de dialogue.

PROC_textbox() : crée un champ de saisie et le place dans sa boite de dialogue.

PROC_trackbar() : crée une échelle de valeurs et le place dans sa boite de dialogue.

Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de

vos remarques, vos commentaires et de vos suggestions.

Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour

TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER

avec un exemple de résolution à télécharger pour vous inspirer.

Google Sites
Report abuse
Page details
Page updated
Google Sites
Report abuse