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 :
- 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é.
- 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