Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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... big_smile
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

 

Pied de page des forums

Powered by FluxBB