#1 Mon 19 January 2004 15:52
- Remi Laborde
- Invité
Creation d'une application englobant plusieurs MBX
Bonjour a tous.
J'ai developpe sous MapBasic plusieurs petites applications utilisables sous MapInfo. (Deplacement de la carte vers un lieu precis, Ouverture de table simplifiee…)
Ce sont des applications simples et qui s'executent de maniere autonome.
Je souhaite regrouper ces programmes dans la meme application et barre de menu.
La facon la plus simple consisterait a regrouper le code dans le meme programme afin d'avoir un seul et unique programme, mais je trouve cette solution ni rigoureuse, ni perene, dans le sens ou je ne pourrai pas facilement apporter de modifications aux differents sous programmes.
La solution la plus adaptee serait d'utiliser le projet de MapBasic avec la creation du programme de base qui contiendrait la creation de la barre d'outil (mbx/mbp) et les sous programmes appeles par la barre d'outil (mbo). Chaque module pourrait etre modifie independamment des autres.
J'ai lu les explications dans l'aide MapBasic, mais je n'arrive pas a faire fonctionner le mbp des erreur sont systematiquement presentes lors de la creation du lien. Il semblerait que cela vienne de la declaration des programmes.
Auriez vous, s'il vous plait, des explications claires a ce sujet, si possible avec un exemple simple afin que je comprenne le fonctionnement ou alors un autre moyen de faire ce que je souhaite.
Merci d'avance pour vos reponses
#2 Mon 19 January 2004 18:30
- Geo Maumet
- Invité
Re: Creation d'une application englobant plusieurs MBX
Bonjour,
Il semblerait que vos modules soient compilés en mbx. Pour pouvoir creer un projet, il faut que les module soient des mbo. Pour cela vos differents modules doivent avoir un lien vers un fichier exterieur. Par exemple un variable.def qui regroupe toutes les variables de vos modules et ajouter un Include qui pointe vers le .def.
#3 Tue 20 January 2004 09:42
- Jplartigau
- Invité
Re: Creation d'une application englobant plusieurs MBX
La solution la plus simple est de faire un petit programme qui genere soit un menu soit un barre d'outils (ou les deux) et pour chaque option oui bouton lancer une subroutine qui contient la commande suivante
Run Application C:MAPBASICAPPnom_appli.MBX
avec des doubles cotes autour du nom de l'appli et de son chemin.
Ainsi vous avez une totale dependence des outils que vous pouvez toujours charger a la volee ou en faisant menu outils executer ....
d'autre part cette solution permet de faire rapidement des menus et barres d'outils mpersonnalises en fonction d'un ou plusieurs utilisateurs (ou groupes d'utilisateurs) potentiels. Ce programme peut etre lance automatiquement a chaque session de Mapinfo en le mettant dans le gestionnaire d'outils du menu outils...
Tout cela est tres simple et tres efficace tant que les programmes sont independants (Sinon projet mapbasic tres simple)
Pour les projets je confirme l'info de la premiere reponse a savoir
un fichier toto.def doit contenir la declaration des fonctions principales de chacun des programmes. Dans ce cas je pense qu'il est necessaire (je l'ai toujours fait ainsi) de renommer le main de chaque programme par un nom explicite. Dans chaque programme la declaration de la fonction main renommer se fait par la commande
include "toto.def" (double cotes autour de toto.def)
bien evidemment le programme qui contient lui la fonction main doit aussi avoir cette commande include pour reconnaitre les fonctions qu'il appelle. J'espere avoir ete assez clair.
Bonne programmation..