papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: A l’intention des nouveaux et qui viennent d’un autre BASIC Ven 1 Mai 2015 - 19:48 | |
| Tout est dans le titre. Tout est dans le code. - Code:
-
rem ============================================================================ rem Programmation événementielle rem Exemple de code rem Par Papydall rem ============================================================================ rem Contrairement à la programmation séquentielle, la programmation événementielle rem est fondée sur des événements pouvant se produire. rem Ces événements peuvent correspondre à une action de l utilisateur : rem un click sur un bouton, une écriture dans une zone de texte, un choix dans rem une case d option ou une case à cocher, etc. rem Le programme sera articulé autour de trois sections : rem La première section déclare et initialise les constantes,les variables, etc. rem Elle peut aussi définir les objets (FORM, BUTTON, etc.) utilisés dans le rem programme ou bien les définir dans une procédure à part, par exemple dans rem SUB GUI() selon l importance du programme. rem GUI : Graphic User Interface rem La seconde section détecte les événements. rem La troisième section gère ces événements. rem Les événements sont captés par le système d exploitation, sont mis en file rem d attente ce qui signifie que les événements sont séquentialisés. rem Ils sont ensuite pris en charge par la boucle de gestion des événements. rem La boucle de gestion des événements prend le premier événement à traiter rem dans la file et le traite. rem Le traitement consiste en l exécution des procédures événement associées à rem celui-ci si il en existe. rem Par exemple, le déclenchement de l événement click sur un bouton quitter rem doit terminer le programme, le choix d un élément dans un menu doit déclencher rem certaines opérations, etc. rem ============================================================================ rem Ce programme est un simple visualiseur d images contenues dans un dossier rem quelconque. rem Au 1er lancement, le programme ouvre l explorateur Window dans le répertoire rem en cours où vous pouvez choisir une image à visualiser. rem Si votre choix se fait dans un autre répertoire, au prochain lancement du rem programme, c est cet autre répertoire qui sera ouvert. rem Le code suivant est constitué de deux parties : rem 1) Le programme principal qui contient : rem Une section Déclaration rem Une section Définition des objets et des événements rem 2) La gestion des événements qui aiguille le programme vers les procédures rem adéquates. Dans cet exemple, on a deux procédures : rem SUB Afficher_Image() rem SUB Quitter_Programme() rem ============================================================================ ' Programme principal ' Déclarations : cette section se limite à la déclaration d'un simple LABEL ' Le programme ne nécessite pas de variales globales à déclarer. label Gestion_click ' Déclaration et Description des objets ' Fenêtre principale du programme : FORM 0 left 0, 300 : top 0, 200 : width 0, screen_x/2 : height 0, screen_y/2 + 100 color 0, 50,180,150 : caption 0, "Visualisation d'images" ' ------------------------------------------------------------------------------ ' Boutton pour charger une image button 10 : left 10, 80 : top 10, 50 : width 10, 150 : caption 10, "Charger image" font_bold 10 : ' style "gras" on_click 10, Gestion_click : ' On déclare l'événement sur cet objet ' quand l'utilisateur clique sur ce boutton, ' ça déclenche l'événement Gestion_Click ' ------------------------------------------------------------------------------ ' Bouton pour quitter le programme button 20 : left 20, width(10) +left(10) +20 : top 20, 50 : width 20, 150 font_bold 20 : caption 20, "Quitter" on_click 20, Gestion_click : ' On déclare l'événement sur cet objet ' quand l'utilisateur clique sur ce boutton, ' ça déclenche l'événement Gestion_Click ' ------------------------------------------------------------------------------ ' Déclaration de l'objet PICTURE picture 30 : stretch_on 30 : ' redimensionner l'image visualisée par l'objet ' PICTURE à la forme de cet objet left 30, 50 : top 30, 100 : width 30, width(0)/2 : height 30, width(0)/2 ' ------------------------------------------------------------------------------ ' Déclaration de l'objet OPEN_DIALOG open_dialog 40 : ' ouvrir la boîte de dialogue pour choisir un nom de fichier filter 40,"Fichiers images | *.bmp ; *.jpg" : ' filtrer les types de fichier à afficher ' ------------------------------------------------------------------------------ end : ' Fin du programme principal ' Cette commande est indispensable ici. Elle a pour rôle d'arrêter le programme ' pour l'empêcher d'aller plus loin. ' Cependant, le programme reste actif et continue à traiter et à répondre aux ' événements définis rem ============================================================================
' Gestion des événements Gestion_click:
select number_click : ' Déterminer l'objet cliqué case 10 : Afficher_Image() : ' On a cliqué sur l'objet 10 qui est ' le bouton Charger_Image, on se branche ' sur la procédure Afficher_Image() case 20 : Quitter_Programme() : ' On a cliqué sur l'objet 20 qui est ' le bouton Quitter, on se branche ' sur la procédure Quitter_Programme() end_select return : ' Terminer le sous-programme, rendre la main au programme principal ' et remet le programme en attente d'événement rem ============================================================================ ' Procédure pour afficher une image SUB Afficher_Image() dim_local fichier$ : ' Une variable locale, elle n'est visible que dans ' cette procédure et sera détruite automatiquement ' à la sortie de la procédure déclenchée par END_SUB fichier$ = file_name$(40) : ' retourner le nom du fichier choisi par l'utilisateur if fichier$ <> "_" : ' L'utilisateur a-t-il validé par 'OUVRIR' ? file_load 30, fichier$ : ' Si oui, on charge le fichier ' si l'utilisateur a cliqué sur 'Annuler, on ne fait rien end_if END_SUB rem ============================================================================ ' Procédure pour quitter le programme SUB Quitter_Programme() ' On va être prudent et poser une question à l'utilisateur pour vérifier s'il ' veut effectivement quitter if message_confirmation_yes_no("Vous voulez vraiment quitter ce programme ?") = 1 ' L'utilisateur a cliqué sur YES à la question posée (ou a tappé la touche <ENTER> ' qui est sélectionnée par défaut par le système), alors le programme se termine terminate : ' arrête définitivement l'exécution du programme et libère ' la mémoire. Tous les objets sont détruits. ' Le programme n'existe plus en mémoire et tout s'arrête ici ' On revient à PANORAMIC EDITOR end_if ' Si le programme arrive jusqu'ici, c'est que l'utilisateur a cliqué sur NO à la ' question posée. ' Le traitement de la procédure est fini et on rend la main au sous-programme ' qui a déclenché cette procédure, c-à-d Gestion_Clik END_SUB rem ============================================================================
PS : Vous remarquez que je nomme les objets avec des numéros croissant de 10 en 10 et non de 1 à 1. C'est juste pour pouvoir insérer d'autres objets si besoin est, mais ça n'a aucune influence sur le déroulement du programme : une simple habitude. Ne dit-on pas que "l'habitude est une seconde nature" ? Bonne programmation sous PANORAMIC! EDIT : Les vétérans et les spécialistes de PANORAMIC voudront bien donner leur avis. | |
|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 1 Mai 2015 - 20:20 | |
| Je ne sais pas si je dois me considérer comme un vétéran... Juste une petite remarque sur ta façon de déclarer un message, je préfere i%=message_warning_ok("mon texte") plutôt... | |
|
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: A l’intention des nouveaux et qui viennent d’un autre BASIC Ven 1 Mai 2015 - 21:42 | |
| En tout cas bravo pour l'effort fait pour les commentaires. Ca sent le programme qui va servir pour un article ça. Enfin je suppose, mais en tout cas bravo pour la peine prise pour les explications dans le source et le programme fonctionne très bien | |
|
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: A l’intention des nouveaux et qui viennent d’un autre BASIC Ven 1 Mai 2015 - 23:08 | |
| Merci ygeronimi. Merci Jicehel - ygeronimi a écrit:
- Juste une petite remarque sur ta façon de déclarer un message,
je préfere i%=message_warning_ok("mon texte") plutôt... Comme tous les chemins mènent à Rome, autant prendre le sentier battu ! Plus sérieusement, j’ai voulu montrer UNE manière de rédiger un code (très simple) en Panoramic gérant des événements. J’ai insisté sur la structure du programme qui doit être claire et quelle partie du programme fait quoi. De cette façon, on oublie (heureusement !) les tests et les branchements qui n’en finissent pas en rendant le code comme un treillis inextricable. Mais ta remarque sur le message_warning est tout à fait légitime. - Spoiler:
| |
|
Contenu sponsorisé
| Sujet: Re: A l’intention des nouveaux et qui viennent d’un autre BASIC | |
| |
|