FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Problème de compilateur.
par Pedro Alvarez Hier à 20:01

» COMPILATEUR V 0.9 beta 8 du 18 aout 2017
par Pedro Alvarez Hier à 19:54

» Pb 17 (en analyse): ITEM_SELECT ne fonctionne pas
par Jack Jeu 17 Aoû 2017 - 19:26

» Compilateur FBPano
par Mike Jeu 17 Aoû 2017 - 13:52

» un nouveau editeur panobasic
par Jean Claude Jeu 17 Aoû 2017 - 10:18

» Le compilateur.
par Pedro Alvarez Jeu 17 Aoû 2017 - 8:36

» Pb 16 (en analyse): ON_CLOSE plante à l'exécution
par Jack Mer 16 Aoû 2017 - 20:00

» Pb 15 (en analyse): TIMER_ON plante à l'exécution
par Jack Mer 16 Aoû 2017 - 19:58

» KGF_dll - nouvelles versions
par Yannick Dim 13 Aoû 2017 - 17:35

» probleme d'outil
par Yannick Dim 13 Aoû 2017 - 17:32

» Carte de France des régions
par Yannick Sam 12 Aoû 2017 - 21:33

» Pb 14 (en analyse): PRINT_LOCATE plante à l'exécution
par Jack Ven 11 Aoû 2017 - 22:37

» Petit avertissement [Mots réservés]
par papydall Ven 11 Aoû 2017 - 13:45

» Distances sur plan
par JL35 Jeu 10 Aoû 2017 - 21:29

» Tracé : Triangle, Carrée, Dents de scie, Sinusoïde redressée
par papydall Jeu 10 Aoû 2017 - 14:52

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Août 2017
LunMarMerJeuVenSamDim
 123456
78910111213
14151617181920
21222324252627
28293031   
CalendrierCalendrier

Partagez | 
 

 A l’intention des nouveaux et qui viennent d’un autre BASIC

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
papydall

avatar

Nombre de messages : 5508
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: A l’intention des nouveaux et qui viennent d’un autre BASIC   Ven 1 Mai 2015 - 20: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" ? Laughing

Bonne programmation sous PANORAMIC!

EDIT : Les vétérans et les spécialistes de PANORAMIC voudront bien donner leur avis. king
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Yannick

avatar

Nombre de messages : 7968
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 1 Mai 2015 - 21: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jicehel

avatar

Nombre de messages : 5849
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: A l’intention des nouveaux et qui viennent d’un autre BASIC   Ven 1 Mai 2015 - 22: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 Wink et le programme fonctionne très bien
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5508
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: A l’intention des nouveaux et qui viennent d’un autre BASIC   Sam 2 Mai 2015 - 0: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 !  Laughing

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. king

Spoiler:
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Contenu sponsorisé




MessageSujet: Re: A l’intention des nouveaux et qui viennent d’un autre BASIC   

Revenir en haut Aller en bas
 
A l’intention des nouveaux et qui viennent d’un autre BASIC
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Boutons nouveaux messages
» Bienvenue à tous les nouveaux membres
» Des nouveaux sons pour live messenger
» Ne voit plus les Nouveaux sujets
» Nouveaux messages qui n'apparaissent pas

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC 32 bits :: Vos sources, vos utilitaires à partager-
Sauter vers: