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 ⇨ menulib.bbc

FN_pollmenu()

DESCRIPTION.


La fonction FN_pollmenu() surveille les actions portée sur la barre de menu par la souris ou le clavier, et retourne l'identifiant de l'option choisie.




SYNTAXE.


koption = FN_pollmenu( menu , ^procedure() )




REMARQUES.


menu doit être l'identifiant de la variable qui à reçu la valeur retourné par la fonction FN_createmenubar.


^procedure() doit être l'identifiant de la procédure personnalisée qui doit être exécutée, ou 0, si le traitement de l'action est effectuée directement. Notez la présence obligatoire du caractère ^ devant le nom de la procédure.  


L'appel de la fonction FN_pollmenu() retourne une valeur numérique qui devra affecter une variable, indiquant l'identifiant de l'option choisie, et définie lors de l'appel de la PROC_addmenu(). Cette valeur est aussi transmise, via le paramètre obligatoire, à la procédure de rappel, si elle est présente, et qui devra le prévoir dans sa définition.


Si aucune option d'un menu déroulant n'est sélectionnée au moment de l'appel de la  fonction FN_pollmenu() la valeur 0 sera retournée.


Pour des réponses fluide de la barre de menu, la fonction FN_pollmenu() doit être appelée régulièrement, de préférence au moins 20 fois par seconde, soit par une interruption de minuterie soit votre boucle principale.  Il convient de s'assurer que le style visuel et la fonte appropriées sont bien sélectionnées au moment de l'appel de la fonction FN_pollmenu().



Important : l'appel de la procédure PROC_drawmenubar() et de la fonction FN_pollmenu() feront basculer la fenêtre de sortie en mode VDU 5, c'est-à-dire que les listes d'impression, présentent à la suite d'une instruction PRINT ou INPUT, seront dirigées dans la surface graphique de la fenêtre de sortie, à partir de la position du curseur graphique. Si ce n'est pas le comportement attendu par le programme, il faudra utilisé la commande VDU 4 pour que ce soit la position du curseur textuel qui soit pris en compte.



La procédure FN_pollmenu() est importée depuis le module menulib.bbc. 




EXEMPLE.


1. Sans procédure de rappel.


REM --- Importation des modules ---

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

INSTALL @lib$ + "menulib.bbc"


REM --- INITIALISATION GENERALE ---

MNU_Menu = FN_createmenubar


REM --- Préparation des menus déroulants ---

DIM MNU_Fichier$( 5 ) , MNU_Fichier%( 5 )

MNU_Fichier$() = "  &Fichier  " ,  "&Nouveau" + CHR$9 + "Ctrl+N" , "&Ouvrir" , "&Enregistrer" + CHR$9 + "Ctrl+S" , "" , "&Quitter"

MNU_Fichier%() = 5 , 101 , 102 , ( 4096 + 103 ) , 0 , 104

PROC_addmenu( MNU_Menu , MNU_Fichier$() , MNU_Fichier%() )


DIM MNU_Edition$( 4 ) , MNU_Edition%( 4 )

MNU_Edition$() = "  &Edition  " ,  "Couper" + CHR$9 + "Ctrl+X" , "Copier" + CHR$9 + "Ctrl+C" , "Coller" + CHR$9 + "Ctrl+V"

MNU_Edition%() = 3 , 201 , 202 , ( 4096 + 203 ) 

PROC_addmenu( MNU_Menu , MNU_Edition$() , MNU_Edition%() )


DIM MNU_Aide$( 3 ) , MNU_Aide%( 3 )

MNU_Aide$() = "  &Aide  " , "Manuel" , "A propos de ..."

MNU_Aide%() = 2 , 301 , 302 

PROC_addmenu( MNU_Menu , MNU_Aide$() , MNU_Aide%() )


REM --- Afficher la barre menu ---

PROC_setmenupalette( FALSE )

PROC_drawmenubar( MNU_Menu )



REM --- BOUCLE PRINCIPALE ---

REPEAT 

koption = FN_pollmenu( MNU_Menu , 0 )

VDU 4

PRINT TAB( 0 , 10 ) ; 

CASE koption OF

WHEN 101 : PRINT "FICHIER - Nouveau" ; SPC( 10 )

WHEN 102 : PRINT "FICHIER - Ouvrir" ; SPC( 10 )

WHEN 103 : PRINT "FICHIER - Sauvegarder" ; SPC( 10 )

WHEN 104 : PRINT "FICHIER - Quitter" ; SPC( 10 )

WHEN 201 : PRINT "EDITION - Couper" ; SPC( 10 )

WHEN 202 : PRINT "EDITION - Copier" ; SPC( 10 )

WHEN 203 : PRINT "EDITION - Coller" ; SPC( 10 )

WHEN 301 : PRINT "AIDE - Manuel" ; SPC( 10 )

WHEN 302 : PRINT "AIDE - A propos de" ; SPC( 10 )

ENDCASE

WAIT( 10 )

UNTIL koption = 104



REM --- Fin du programme ---

PRINT "Fin  du test."

PRINT "Au revoir."

END




2. Avec une procédure de rappel.


REM --- Importation des modules ---

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

INSTALL @lib$ + "menulib.bbc"


REM --- INITIALISATION GENERALE ---

MNU_Menu = FN_createmenubar


REM --- Préparation des menus déroulants ---

DIM MNU_Fichier$( 5 ) , MNU_Fichier%( 5 )

MNU_Fichier$() = "  &Fichier  " ,  "&Nouveau" + CHR$9 + "Ctrl+N" , "&Ouvrir" , "&Enregistrer" + CHR$9 + "Ctrl+S" , "" , "&Quitter"

MNU_Fichier%() = 5 , 101 , 102 , ( 4096 + 103 ) , 0 , 104

PROC_addmenu( MNU_Menu , MNU_Fichier$() , MNU_Fichier%() )


DIM MNU_Edition$( 4 ) , MNU_Edition%( 4 )

MNU_Edition$() = "  &Edition  " ,  "Couper" + CHR$9 + "Ctrl+X" , "Copier" + CHR$9 + "Ctrl+C" , "Coller" + CHR$9 + "Ctrl+V"

MNU_Edition%() = 3 , 201 , 202 , ( 4096 + 203 ) 

PROC_addmenu( MNU_Menu , MNU_Edition$() , MNU_Edition%() )


DIM MNU_Aide$( 3 ) , MNU_Aide%( 3 )

MNU_Aide$() = "  &Aide  " , "Manuel" , "A propos de ..."

MNU_Aide%() = 2 , 301 , 302 

PROC_addmenu( MNU_Menu , MNU_Aide$() , MNU_Aide%() )


REM --- Afficher la barre menu ---

PROC_setmenupalette( FALSE )

PROC_drawmenubar( MNU_Menu )


REM --- BOUCLE PRINCIPALE ---

REPEAT 

koption = FN_pollmenu( MNU_Menu , PROC_Menu( ) )

WAIT( 10 )

UNTIL koption = 104



REM --- Fin du programme ---

PRINT "Fin  du test."

PRINT "Au revoir."

END



REM --- Définition de la procédure de rappel ---

DEF PROC_Menu( Q% )

VDU 4

PRINT TAB( 0 , 10 )  Q%

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