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_newdialog()

DESCRIPTION.


La fonction FN_newdialog() déclare et crée une nouvelle boite de dialogue.



SYNTAXE.


DLG_Boite = FN_newdialog( titre , largeur , hauteur )




REMARQUES.


titre doit être une chaine de caractères quelconque mais valide. titre  sera affiché dans la barre de titre de la boite de dialogue.


largeur doit être un nombre entier, exprimé en unités de boite de dialogue, donnant la largeur de la boite de dialogue.


hauteur doit être un nombre entier, exprimé en unités de boite de dialogue, donnant la hauteur de la boite de dialogue.



Si largeur et/ou hauteur valent 0, les controles contenus dans la boite de dialogue, seront affichés directement dans la fenêtre de sortie du BBC BASIC, et non dans un conteneur standard de boite de dialogue. Dans ce cas, largeur et hauteur sont exprimés en unité graphique standard de la fenêtre de sortie et titre est ignoré.



La fonction FN_newdialog() va déclarer et initialiser une nouvelle boite de dialogue, c'est-à-dire un conteneur de controles vide, en lui donnant un titre et ses dimensions. La fonction FN_newdialog() retourne un nombre entier, identifiant formellement la boite de dialogue, qui devra être stockée dans une variable afin de pouvoir être fourni aux controles qui devront être placés dans cette boite de dialogue.

 

Une boite de dialogue ne doit être déclarée qu'une seule fois, mais elle pourra être utilisée plusieurs fois. La fermeture d'une boite de dialogue ne la détruit pas.



Les boîtes de dialogue adaptent leurs dimensions, largeur et hauteur, automatiquement à la taille de la fonte par défaut, celle-ci devra donc chargée, avec l'utilisation de l'instruction OSCLI, avant tout appel de la fonction FN_newdialog(). En général, une unité de mesure de boite de dialogue correspond à environ, un huitième de la taille de la police de caractères, c'est-à-dire qu'une unité de mesure est égale à : ( taille de police / 8 ) pixels.


Un controle ne peut être placé que des des boite de dialogues qui ont déjà été déclarées.


L'ordre de création des controles d'une boite de dialogue est important car il déterminent aussi l'ordre dans lequel les controle seront visité par l'emploi de la touche de tabulation (tab).


Le style de contraste, sombre ou clair, des boites de dialogue, peut-être définit par défaut avec la procédure PROC_setdialogpalette(). Une fois la boite de dialogue créée, ses controles installés et leurs éventuelles procédures personnalisées définies, son affichage, à une position donnée dans la fenêtre de sortie du BBC BASIC, se fera avec la fonction : 

- FN_showdialog() qui l'affiche dans le style par défaut ;

- FN_showdialogx() qui permet de choisir le style de son affichage.


La procédure PROC_registerdlgcallback() permet d'associer une fonction de surveillance à une boite de dialogue. Cette fonction sera invoquée a intervalles régulier et chaque fois qu'une action : clavier, souris, ..., sera perçues sur et par la boite de dialogue, pour, par exemple mettre à jour le contenu des ses controles.



La fonction FN_newdialog() 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