La dérivation par étapes

Pré-requis :

 

Tout au long de cet article, nous utiliserons comme exemple un projet de dérivation de l'écran de gestion des clients de la Gestion Commerciale Memsoft pour ajouter une zone 'Partenaire commercial'.

Installation du dossier de dérivation de l'application à dériver

Pour dériver un projet, il faut avoir installé son dossier de dérivation. C'est un composant fournis par l'éditeur et installable depuis Oxygène qui copie dans le répertoire oxydev une partie des sources de ce projet.

 

Nous installons le Composant 'Deriver Gestion Commerciale' : le répertoire OXYDEV\GESCOM a été créé et les fichiers .LIB des DLL de la gesco ont été copiés dans OXYDEV\SYSTEME\BIN.

Création d'un projet de dérivation

Nous allons maintenant créer un nouveau projet de qui s'appellera DERCLI, dérivation de GCPCLI. La solution s'appellera GCDER.

 

Faire Fichier > Nouveau > Projet ...

 

 

Dans l'onglet 'Modèles et dérivation' de l''assistant de création d'un projet Oxygène, vous devez saisir le nom de la DLL du projet dérivé. Si l'objet dérivé utilise un modèle non standard, il faudra également ajouter le code du projet qui contient le modèle.

 

L'objet GESTION du composant GCPCLI que l'on souhaite dériver utilise le modèle GCMGEST défini dans le composant GCMUTIL. GCMGEST n'étant pas un modèle standard d'Oxygène et étant déclaré dans un autre projet, vous devez ajouter une dépendance sur GCMUTIL. (voir également Les dépendances et Problème de recherche d'un source)

Donc, dans 'Dépendances', nous indiquons GCPCLI;GCMUTIL.

 

Création de l'objet de dérivation

Sélectionner le projet DERCLI dans l'explorateur de solutions et faire un clic droit puis Ajouter > Nouvel élément ...

Créons un nouveau L4G nommé gestion.

 

L'assistant de création d'un source Oxygène, permet de saisir toutes les informations nécessaires pour une dérivation mais ces informations peuvent être saisies directement dans le source par la suite.

 

Dans 'Créer un L4G' de l'onglet général, sélectionner 'Dérivation d'un objet' : ce canevas permet de prendre en compte les données saisies dans l'onglet 'Dérivation'.

 

 

Aller dans l'onglet 'Dérivation'. Nous indiquons ici les informations sur le source et l'objet que nous allons dériver :

  • Composant : GCPCLI

  • Objet : GESTION

  • Chemin du fichier source : ..\GESCOM\GCPCLI\GESTION

Le chemin du fichier est un chemin relatif par rapport au répertoire du projet et le nom du fichier L4G est indiqué sans son extension.

(Il faudrait également ajouter ici le chemin du source contenant le modèle mais cet assistant ne sait pas encore le gérer. Nous le ferons directement dans le source.)

 

Modification du source

En suivant ces étapes le projet est prêt pour la dérivation !

Il ne reste plus qu'à ajouter le code pour gérer notre nouveau champ et modifier l'écran de gestion standard des clients.

 

Différences par rapport à un source classique :

  • GLOBAL : défini le global DERCLI contenant le nouvel écran de gestion mais aussi celui de GCPCLI pour récupérer les autre ressources de GCPCLI comme les images et les menus contexteuls.

  • SRC_MODELE : cette déclaration indique où rechercher le source du projet d'origine ainsi que le source contenant le ou les modèles. (voir également Problème de recherche d'un source)

  • Objet GCPCLI.GESTION : ceci veut dire que notre objet est une dérivation de l'objet GESTION du composant GCPCLI.

  • Ne pas oublier de mettre AppliquerDefaut dans les méthodes que l'on redéfinit pour conserver le traitement d'origine.

 

Remarques

Dans Oxygène

Informez Oxygène de la dérivation dans la table COMPOSANTS de la base $$.

Créez un enregistrement par DLL dérivée en précisant le nom de la DLL dérivée (GCPCLI) puis le nom de la nouvelle DLL (DERCLI).

Paramétrer manuellement un projet pour la dérivation

Vous pouvez paramétrer un projet qui n'était prévu initialement pour de la dérivation.

 

Vous devez ajouter une dépendance sur la librairie du projet dérivé (sur gcpcli.lib si vous dérivez gcpcli.dll).

Si le projet dérivé utilise un modèle non standard déclaré dans un autre projet (ex: GCMUTIL), vous devez également mettre une dépendance sur la librairie de ce projet (gcmutil.lib).

 

Consultez la F.A.Q. et en particulier Les dépendances et Ajouter un répertoire en Include.