⇨ MENU ⇨ BIBLIOTHEQUE ⇨ dlglib.bbc
FN_setproc()
⇨ MENU ⇨ BIBLIOTHEQUE ⇨ dlglib.bbc
FN_setproc()
DESCRIPTION.
La fonction FN_setproc() permet d'associer l'exécution d'une procédure personnalisée quand l'utilisateur clique un controle.
SYNTAXE.
kvaleur = FN_setproc( PROC_Nom() )
REMARQUES.
PROC_Nom() doit être le nom d'une procédure personnalisée. La paire de parenthèses est obligatoire et doit être vide ; il ne doit pas y avoir de référence à des paramètres dans celle-ci. Lors du déclenchement de l'appel de la procédure personnélisée associée, l'identifiant de la boite de dialogue et l'indentifiant de son controle seront transmis, automatiquement, comme paramètres. La définition de la procédure personnalisée doit doit donc, elle, prévoir de recevoir ces deux attributs : DEF PROC_Nom( Qboite , Qcontrole ).
La fonction FN_setproc() va retourner une valeur numérique, donnant l'emplacement mémoire où est stockée la définition de la procédure. Cette valeur doit être donnée comme identifiant du ou des controles qui appelleront cette procédure si l'utilisateur clique avec la souris sur lui, ou eux.
La valeur retournée par la fonction FN_setproc() peut être utilisée comme identifiant par plusieurs controle tant qu'ils ne sont pas inclus dans la même boite de dialogue. Cette valeur peur être :
- incluse directement comme identifiant du controle :
PROC_button ( b , t , FN_setproc ( PROC_Nom() ) , a , o , l , h , s ) ;
- ou affectée dans une variable, qui sera utilsée comme identifiant du controle :
kvaleur = FN_setproc ( PROC_Nom() )
PROC_button ( b , t , kvaleur , a , o , l , h , s ) ;
Rappel : tous les controles d'une même boîte de dialogue doivent avoir un identifiant unique mais un identifiant peut être utilisé par plusieurs controles dans des boites de controle différentes.
Voir la fonction FN_newdialog() qui permet de déclarer et de créer une boite de dialogue.
Voir la procédure PROC_registerdlgcallback() qui définit une fonction de rappel d'une boite de dialogue.
La procédure PROC_button() 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 , 35 )
REM --- Creation des controles de la boite de dialogue nommee DLG_Test ---
PROC_button( DLG_Test , "Valider." , 1 , 10 , 10 , 40 , 15 , 0 ) : REM - Bouton OK fermant la fenetre (identifiant = 1)
PROC_button( DLG_Test , "Fermer." , 8 , 60 , 10 , 40 , 15 , 0 ) : REM - Bouton CLOSE fermant la fenetre (identifiant = 8)
PROC_button( DLG_Test , "Message." , FN_setproc( PROC_Action() ) , 110 , 10 , 40 , 15 , 0 ) : 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 "Vous avez valide."
WHEN 8 : PRINT "Vous avez annule."
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
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.