Le modèle d'objet MENUGRPH

Le modèle d'objet MENUGRPH permet à l'utilisateur, de créer des menus de type graphique. Ces menus seront constitués essentiellement de boutons, dessins et menus contextuels. Le modèle gère automatiquement les droits d'accès aux objets liés à l'écran, conformément aux autorisations qui apparaissent dans Options de démarrage et droits d'accès du Menu Général d'Oxygène++. Un menu graphique sera défini avec l'éditeur d'écran d'Oxygène++. Le modèle MENUGRPH dérive du modèle TRAITEMENT.

L'utilisation des menus graphiques peut se faire sous deux modes: le premier mode dit "automatique", qui nécessite uniquement la définition d'un écran; le deuxième mode "programmation" où le développeur doit définir un objet dérivant de MENUGRPH.

Liste des déclarations standards

  ECRAN   Ecran définissant le menu graphique

Liste des méthodes standards

  INIT  

Initialisation

 

DEBUT

 

Début

 

DEBUT_ACTIVATION

 

Activation de l'objet (prise du focus)

 

FIN_ACTIVATION

 

Inactivation de l'objet (perte du focus)

 

FAIRE

  Méthode principale
 

FIN

  Fin de l'objet
 

SORTIE

  Sortie de l'objet

Liste des méthodes spécialisées

  GERER_DROIT   Informe des droits de l'utilisateur sur un objet
  AFFECTER_CURSEUR   Désigne un curseur pour les contrôles de type dessin
  ACTIVER_MENU_GRAPHIQUE   Méthode permettant d'activer un autre menu graphique
  CREER_OBJET   Méthode à utiliser dans les menus contextuels pour créer un objet
  CREER_UNIQUE   Méthode à utiliser dans les menus contextuels pour créer un objet unique
  ACTIVER_OBJET   Méthode à utiliser dans les menus contextuels pour activer un objet
  APPELER_OBJET   Méthode à utiliser dans les menus contextuels pour appeler un objet
  METHODE_COMPOSANT   Méthode à utiliser dans les menus contextuels pour appeler un composant
  MESSAGE_COMPOSANT   Méthode à utiliser dans les menus contextuels pour appeler un composant

Fonctionnement du modèle

Le modèle MENUGRPH s'occupe de gérer les accès aux objets (conformément aux droits d'accès définis pour les utilisateur dans Options de démarrage et droits d'accès du Menu Accueil) qui auront été spécifiés dans l'écran. Il est possible d'actionner un objet dans un écran par deux moyens :

  1. CLIC GAUCHE SUR UN CONTROLE : pour cela il faut renseigner la propriété Traitement du contrôle, et dans la propriété Extension il est possible de préciser un paramètre DESACTIVER. Ce paramètre peut prendre deux valeurs CACHER ou INTERDIRE, qui précisent l'action à mener si un objet n'est pas autorisé. Par défaut, le contrôle sera caché.
  2. CLIC DROIT SUR UN CONTROLE : il est alors possible d'accéder au menu contextuel du contrôle. Pour pouvoir actionner un objet ou un composant à partir du menu contextuel, il faut fournir les informations suivantes: la propriété Commande contient le nom de la méthode spécialisée qu'il faut activer. Le Code doit être renseigné avec un identifiant unique pour tout l'écran. Les paramètres du menu contextuel doivent contenir les informations relatives à l'objet ou au composant que l'on désire activer.

 

Si le mode de désactivation n'est pas précisé l'action CACHER sera choisie par défaut

On peut aussi ajouter à la suite, les paramètres à transmettre à l'objet que l'on désire lancer.

Ne pas oublier de mettre les constantes entre guillemets.  

Les déclarations standards

ECRAN

La déclaration ECRAN est obligatoire dans un objet de type MENUGRPH, elle indique le nom de l'écran qui sera utilisé. L'écran doit avoir été défini avec l'éditeur d'écrans Oxygène++ .

Les méthodes spécialisées du modèle MENUGRPH

GERER_DROIT

La méthode GERER_DROIT permet de connaître les droits de l'utilisateur, sur l'objet concerné. Cette méthode nécessite deux paramètres : le nom de l'objet et l'autorisation accordé à cet objet. Le deuxième paramètre contient l'autorisation pour l'objet cité.

Utilisation :

Methode GERER_DROIT
  PARAMETRES :
  Chaine nom_objet
  Entier Reference autorisation  // autorisation accordée->1 refusée->0
  ...
FinMethode

  

Si un développeur désire gérer les droits des utilisateurs de manière autonome, c'est en redéfinissant cette méthode qu'il doit intervenir.

Imaginons qu'une variable MODE_MASTER=1 indique un droit absolu à tous les objets, la redéfinition de GERER_DROIT serait celle-ci :

Exemple de redéfinition :

Methode GERER_DROIT
  PARAMETRES :
  Chaine nom_objet
  Entier Reference autorisation  // autorisation accordée->1 refusée->0
  Si MODE_MASTER_Alors
      autorisation=1
  Sinon
      AppliquerDefaut GERER_DROIT (nom_objet ,autorisation)
  FinSi
FinMethode

 

AFFECTER_CURSEUR

AFFECTER_CURSEUR désigne le curseur à utiliser lorsque la souris passe au dessus d'un contrôle de type dessin. Le paramètre à fournir est le nom du curseur: chemin et nom avec l'extension .cur .

Exemple :

AppliquerMethode AFFECTER_CURSEUR ("c:\oxydev\systeme\curseurs\finger.cur")
 ou même
AppliquerMethode AFFECTER_CURSEUR ("..\curseurs\finger.cur")

Il est également possible de définir le curseur dans la propriété Extension de l'écran le paramètre : CURSEUR_DESSIN=nom du curseur.

Exemple : Si le curseur se trouve dans le répertoire C:\OXYDEV\SYSTEME\CURSEURS et porte le nom FINGER.cur le contenu de l'extension de l'écran sera :

                           CURSEUR_DESSIN= C:\OXYDEV\SYSTEME\CURSEURS\finger.cur

                           ou mieux :

                           CURSEUR_DESSIN= ..\CURSEURS\finger.cur

 Remarque :  Par défaut le curseur du menu graphique pour les éléments de type dessin est une main.

 

ACTIVER_MENU_GRAPHIQUE

ACTIVER_MENU_GRAPHIQUE. permet de basculer d'un menu graphique vers un autre menu graphique. Pour cela, il suffit de connaître le nom de l'écran du menu graphique que l'on désire activer.

Le paramètre est donc : [Nom de l'écran]

Un autre moyen est possible : appeler le bouton "BASCULER" est mettre dans l'Extension : FLIP_MENU=[nom de l'écran] (par exemple FLIP_MENU=gapmenu.ecr).

  

CREER_OBJET   CREER_UNIQUE   ACTIVER_OBJET   APPELER_OBJET

L'intérêt de ces 4 méthodes est de pouvoir actionner un objet depuis un menu contextuel sans avoir à programmer. Ces méthodes n'ont aucun intérêt pour la programmation.

Evénement: sur demande associé à un menu.

Action: lance l'instruction Créer_objet, Créer_unique, Activer_objet ou Appeler_objet avec les paramètres du menu contextuel.

Les paramètres du menu contextuel relatifs au lancement d'un objet sont les suivants :

                          [Nom Domaine-Nom Objet]

                          [Nom de la DLL]

                          (Mode de désactivation: CACHER ou INTERDIRE)

                          (Paramètres à transmettre à l'objet lancé)

  

METHODE_COMPOSANT   MESSAGE_COMPOSANT

L'intérêt de ces 2 méthodes est de pouvoir actionner un composant depuis un menu contextuel sans avoir à programmer. Ces méthodes n'ont aucun intérêt pour la programmation. La première est un appel synchrone, alors que la deuxième est asynchrone.

Evénement: sur demande associé à un menu.

Action: lance l'instruction AppliquerMethodeComposant, EnvoyerMessageComposant avec les paramètres du menu contextuel.

Les paramètres du menu contextuel relatifs au lancement d'un composant sont les suivants :

                          [Nom du composant]

                          [Nom de la méthode]

                          (Mode de désactivation: CACHER ou INTERDIRE)

                          (Paramètres à transmettre au composant activé)

Utilisation des menus graphiques

Pour pouvoir utiliser les menus graphiques de manière automatique, il existe deux solutions : une première solution simple où le développeur se limite aux mécanismes mis en place dans le modèle, en créant seulement l'écran; une deuxième solution où il pourra intervenir dans le comportement du menu graphique, en programmant.

Première solution

Le développeur met au point son écran grâce à l'éditeur d'écran d'Oxygène++,  le fichier écran généré (extension .ECR) devra être placé sous le répertoire [OXYDEV]\SYSTEM\BIN avec l'extension .MNG .

Si un menu existe ( dans le répertoire [OXYDEV]\SYSTEM\BIN ) sous les formes graphique (.MNG) et arborescent (.MEN), c'est à dire que deux fichiers ont le même nom mais deux extensions différentes; la priorité sera toujours donné au menu graphique. Il est possible d'inhiber ce comportement, en ajoutant l'option /M, dans la ligne de lancement d'Oxygène.

Deuxième solution

Le développeur met au point son écran grâce à l'éditeur d'écran d'Oxygène++. Il créé ensuite un objet dérivant du modèle MENUGRPH. L'objet obtenu sera placé dans une DLL et pourra donc être appelé au moment où l'utilisateur le désire.

Si le développeur veut que son menu graphique se lance automatiquement au démarrage d'Oxygène, il faut préciser le paramètre Auto dans la déclaration de l'objet. La DLL sera ensuite renommé en .RUN et placée sous le répertoire [OXYDEV]\SYSTEM\BIN.

Exemple de menu graphique automatique:

Objet MENUGRPH (Auto): MonMenuAutomatique "Menu Graphique démarrant automatiquement depuis une DLL"
       Declaration
              ECRAN : "MonEcran.MNG"
       FinDeclaration
FinObjet

Voir aussi

L'attribut AUTO

Introduction au Menu général et au Volet de navigation