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

FN_showdialog()

DESCRIPTION.


La fonction FN_showdialog() affiche une boite de dialogue, et ses controles.



SYNTAXE.


kvaleur = FN_showdialog( boite , abscisse , ordonnee )




REMARQUES.


boite doit être l'identifiant de la boite de dialogue qui doit être affichée. Il s'agit du nom de la variable qui a reçu la valeur retournée par la fonction FN_newdialog() pour la création de boite.


abscisse doit être des nombre entier, exprimé en unités graphique du BBC BASIC, indiquant l'abscisse du bord gauche boite par rapport au bord gauche de la fenêtre de sortie du BBC BASIC. Si abscisse vaut &FFFFFFFF80000000 (18446744071562068000 en décimal) la boite de dialogue sera centrée sur l'axe abscisses.


ordonnee doit être des nombre entier, exprimé en unités graphique du BBC BASIC, indiquant l'ordonnée du bord haut boite par rapport au bord bas de la fenêtre de sortie du BBC BASIC. Si ordonnee vaut &FFFFFFFF80000000 (18446744071562068000 en décimal) la boite de dialogue sera centrée sur l'axe ordonnées.



La fonction FN_showdialog() va afficher la boite de dialogue boite et son contenu et attendre que l'utilisateur clique sur l'un de ses controles avec la souris et si l'identifiant du controle est une valeur : 

- retournée par une fonction FN_setproc(), la procédure correspondante sera exécutée ;

- comprise entre 1 et 11, elle retournera cette valeur et suspendra sa surveillance des événements ;

- d'une case à option ou une case à choix, elle (dé)cochera cette case ;

- d'une liste fixe, elle (dé)sélectionnera cet élément ;

- d'une liste déroulante, elle placera cet élément comme sélectionné ;

- d'une échelle de valeur, elle déplacera le curseur tant que le bouton de la souris restera cliqué ;

- autre, elle ne doit, normalement rien faire ;


Si une fonction de surveillance a été définie avec la procédure PROC_registerdlgcallback() pour une boite de dialogue, tant que cette boite de dialogue est affichée, la fonction de surveillance sera exécutée soit régulièrement ou chaque fois que l'utilisateur cliquera sur une touche du clavier.


L'appel de la fonction FN_showdialog() est bloquant, c'est-à-dire que tant qu'elle n"a pas retournée la valeur de l'un de ses identifiants, ou qu'elle n'est pas effacée par une procédure PROC_closedialog() l'exécution du programme est suspendu.


Bien que cela ne soit pas obligatoire, il est vivement recommandé de placer, soit un bloc d'instructions selon que (CASE ... OF), soit un ensemble de tests (IF ... THEN ... ELSE IF ... ELSE) à la suite de la fonction FN_showdialog(), et si possible avant l'appel de la procédure PROC_closedialog(), pour réagir immédiatement et convenablement au bouton cliquable choisi ( OK, Valider, Annuler, Fermer, ...) pour la sortie de la boite de dialogue.


Même si une fonction FN_showdialog() a retournée une valeur, et n'est donc plus active et en attente d'événement, la boite de dialogue reste affichée tant que la procédure PROC_closedialog() n'a pas été appelé pour cette boite de dialogue, 



Voir la fonction FN_newdialog() qui permet de déclarer et de créer une boite de dialogue. 

Voir la procédure FN_showdialogex() qui permet d'afficher une boite de dialogue en modifiant son style visuel.

Voir la procédure FN_polldialog() qui afficher les controles d'une boite de dialogue dans la fenêtre de sortie.



La fonction FN_showdialog() est importée depuis le module dlglib.bbc. 




EXEMPLE.


REM --- Importation des modules ---

REM --- Module de la bibliothèque BBC BASIC ---

INSTALL @lib$ + "dlglib.bbc"


REM --- Chargement de la police de caracteres par defaut ---

OSCLI "FONT """ + @lib$ + "DejaVuSans"",12" 


REM --- Creation d'une boite de dialogue nommee DLG_Test de 160 x 60 unites intitulee Test ---

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


REM --- Creation des controles de la boite de dialogue nommee DLG_Test ---

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


REM --- Affichage de la boite de dialogue et attende des choix de l'utilisateur ---

kcontrole = FN_showdialog( DLG_Test , &FFFFFFFF80000000 , &FFFFFFFF80000000 )  


REM --- Gestion de la sortie de la boite de dialogue par activation d'un des boutons de  fermeture ---

CASE kcontrole OF

WHEN 1 : PRINT "Au revoir le monde."

WHEN 8 : PRINT "A bientot le monde."

ENDCASE


REM --- Fermeture de la boite de dialogue ---

PROC_closedialog( DLG_Test ) 


REM --- Fin du programme ---

END



REM --- DEFINITION DES METHODES PERSONNALISEES ---


REM --- Procedures d'appel de la boite de dialogue DLG_Test ---

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


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