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
» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Klaus Aujourd'hui à 19:48

» KGF_dll - nouvelles versions
par pascal10000 Aujourd'hui à 17:27

» Mah-Jong européen new-look
par Minibug Hier à 22:31

» track_bar circulaire
par Klaus Hier à 13:54

» API Windows
par Klaus Hier à 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

» anomalie
par Klaus Sam 9 Déc 2017 - 3:21

» hommage
par Jicehel Ven 8 Déc 2017 - 11:29

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 8 Déc 2017 - 10:43

» carte son
par Klaus Ven 8 Déc 2017 - 2:37

» mise a jour calculatrice
par joeeee2017 Mer 6 Déc 2017 - 22:19

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
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 : 5613
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 : 8002
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 : 5863
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 : 5613
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
» nouveaux setup
» Article : Le formatage complice des nouveaux blockbusters

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