#1 Tue 19 May 2009 19:52
- François063
- Participant occasionnel
- Lieu: aubieres
- Date d'inscription: 20 Nov 2008
- Messages: 11
Examiner les menus utilisateur (MapBasic)
Bonjour,
utilisateur de MapInfo 7.5 avec Mapbasic 7.5
je n'ai pas encore réussi à trouver une solution à mon problème dans votre Forum
j'arrive à créer un sous_menu (volatil) dans le menu "Outils" de MapInfo, à créer des boutons dans les barres d'outils de Map
mais maintenant je suis confronté au problème suivant;
mon mbx qui crée ce menu et ces boutons peut être lancé (par VB) plusieurs fois (et à partir de réperoires différents), or ces menus (que l'utilisateur n'a pas forcément quitté) et boutons s'empilent==> je ne sais plus qui est qui etc... et comme le mbx réagit en fonction de ApplicationDirectory$(), c'est ingérable
je souhaiterais parcourir les menus qui ne sont pas de MapInfo y retrouver le mien, s'il existe et ...le gérer soit en tuant l'ancien, ou tout simplement en y actualisant les chemins, je n'ai pas su trouver les commandes adéquates dans le manuel non plus
il y a bien "MenuitemInfoByHandler( handler , attribute )" mais comment s'en servir
merci pour une piste, une commande, une page ? autrement dit merci pour votre aide
Hors ligne
#2 Tue 19 May 2009 22:21
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Examiner les menus utilisateur (MapBasic)
Bonjour
De ce que je comprends, le problème est de déterminer au lancement du mbx si une instance de ce mbx est déjà "au travail"
Pour l'instant je ne vois qu'une astuce: l'écriture d'un petit fichier texte au démarrage et sa destruction à la fin
Avant cette écriture, le mbx teste l'existence du fichier texte et s'il le trouve passe à une procédure comprenant un Terminate Application mon.mbx
(comme les deux instances ont le même nom...cette astuce est sans garantie !!)
Ou alors vous créez des menus identifiés/précédés par un numéro issu du fichiers texte, ce qui permettra de savoir à quelle instance ils "appartiennent"...
Hors ligne
#3 Wed 20 May 2009 09:50
- Richard Lohier
- Participant occasionnel
- Lieu: Le perray en yvelines
- Date d'inscription: 13 Nov 2006
- Messages: 28
Re: Examiner les menus utilisateur (MapBasic)
Bonjour,
Essayez l'utilisation des commandes suivantes :
Code:
... Dim StringApplication$ as String Dim i_chan# As Integer i_chan# = DDEInitiate( "MapInfo" , "System" ) StringApplication$ = DDERequest$(i_chan#, "Topics") ...
StringApplication$ contiendra la liste de toutes les applications MBX en cours d'exécution de MapInfo Professional.
Il restera à tester deux fois (une fois c'est normal, c'est l'appli en cours) cette variable avec le nom de votre appli.
Code:
... Dim Position# as Integer Position# = Instr(1,StringApplication$, "nomdemonappli") If Instr(Position# + (len("nomdemonappli"),StringApplication$, "nomdemonappli") > 0 Then End Program ...
Hors ligne
#4 Wed 20 May 2009 19:52
- François063
- Participant occasionnel
- Lieu: aubieres
- Date d'inscription: 20 Nov 2008
- Messages: 11
Re: Examiner les menus utilisateur (MapBasic)
bonsoir,
Impeccable cela fonctionne,
stringApplication$ contient la liste des mbx et leurs chemins de lancement respectifs,
de plus ils sont rangés dans l'ordre où il ont été lancés...
suite à vos réponses j'avais pensé qu'un "terminate application" pourrait faire l'affaire en tuant le bon, mais il y a encore plus simple
en garnissant stringApplication$ dès le "main" et en plaçant une balise, je peux maintenant faire la gestion des menus (soit je les crée, soit j'actualise les paths)
pour info si le mbx est lancé à partir du même répertoire, "MapInfo" le gère, et neutralise celui qui est en cours d'exécution,
le problème ne survient que lorsque le mbx est lancé à partir d'un autre répertoire et là il est considéré comme une autre application
je n'aurai jamais imaginé aller surveiller les DDE...
merci encore pour votre aide, c'est tellement évident lorsque que l'on vous a confié LA solution
Hors ligne
#5 Wed 20 May 2009 20:06
- Daniel
- Membre
- Lieu: Victoriaville, Québec
- Date d'inscription: 6 Sep 2005
- Messages: 2028
Re: Examiner les menus utilisateur (MapBasic)
Bonjour
Merci pour le suivi. Ça va certainement en aider d'autres.
Daniel
De retour à la géomatique
Hors ligne
#6 Fri 22 May 2009 14:44
- François063
- Participant occasionnel
- Lieu: aubieres
- Date d'inscription: 20 Nov 2008
- Messages: 11
Re: Examiner les menus utilisateur (MapBasic)
Bonjour,
Pour en finir... j'ai du finalement utiliser "Terminate Application" comme le préconisait Maurice, en lui indiquant le chemin complet "Terminate Application chemincomplet\monappli.mbx" la frappe est chirurgicale mais efficace
En effet laisser les mbx en tas en ram n'était pas très heureux...
Hors ligne