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

Printemps des cartes 2024

#1 Wed 15 April 2009 12:10

sdauphin
Participant occasionnel
Date d'inscription: 30 Aug 2009
Messages: 20

placer un symbol sur une carte puis lancer un code mapbasic

Bonjour,

Je ne trouve pas la meilleure façon de procéder pour l'interface de mon programme mapbasic.

Il faut que l'utilisateur clic sur la carte pour localiser un endroit de dysfonctionnement, ensuite le programme s'exécute pour sélectionner des objets d'une ou plusieurs tables pouvant être responsables du problème.

Il faut donc cliquer dans une map pour placer le point, dessiner un symbole, récupérer les coordonnées, puis lancer la recherche dans les tables. Concrètement, Pour commencer je lance mon programme avec un bouton, il y a dans un premier temps vérification des tables ouvertes et affichées, ensuite je voudrais avoir la main avec un curseur pour placer ce point et récupérer les coordonnées, puis je continue avec un nearest pour sélectionner l'objet le plus proche et cela fonctionne bien.

J'ai réussi à leur faire avec un bouton spécial, mais comme celui-ci ne sert qu'une fois j'aimerai mieux m'en passer, y a t'il une solution autre, comme utiliser le bouton de dessin de point ?

Voila le bout de code que j'utilise pour l'instant, quand je clique sur mon bouton spécial :

Code:

Set CoordSys Earth Projection ....
    xdys = Round(CommandInfo(CMD_INFO_X), 0.1)
    ydys = Round(CommandInfo(CMD_INFO_Y), 0.1)
    '
    Create Point 
        Into Window nomcarte
        (xdys,ydys)
        Symbol (53,16711680,15,"MapInfo Cartographic",288,0)
    nom_objet_creer = "Dysfonctionnement_" + Str$(n_dys+1)
    Update nomtable1 Set NOM = nom_objet_creer

'
'trouve l'objet le plus proche du point de dysfonctionnement
alias1 = nomtable1 + ".RowID"
Nearest 1
    From Table selection
    To nomtable1 Into nomtable2
    Type Cartesian'
    Data NOM = alias1

merci pour votre aide

Dernière modification par olreb (Wed 15 April 2009 12:11)

Hors ligne

 

#2 Wed 15 April 2009 13:16

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: placer un symbol sur une carte puis lancer un code mapbasic

olreb a écrit:

...comme utiliser le bouton de dessin de point ?...


Bonjour
Vous devriez pouvoir accéder à ça par Run Menu Command 1711 ...

Hors ligne

 

#3 Wed 15 April 2009 14:36

sdauphin
Participant occasionnel
Date d'inscription: 30 Aug 2009
Messages: 20

Re: placer un symbol sur une carte puis lancer un code mapbasic

merci Maurice
J'ai déjà essayé, je vais retenté, je m'y suis peut-être mal pris...

Hors ligne

 

#4 Wed 15 April 2009 14:46

sdauphin
Participant occasionnel
Date d'inscription: 30 Aug 2009
Messages: 20

Re: placer un symbol sur une carte puis lancer un code mapbasic

si je place cette ligne de commande ("Run Menu Command 1711") avant d'exécuter mon code (le bout ci-dessus). J'ai une erreur avec la ligne "ydys = Round(CommandInfo(CMD_INFO_Y), 0.1)" qui est "CommandInfo : argument 2 en dehors des limites". Je n'ai pas le temps de placer le point, l'erreur apparaît de suite.

il faut que ce soit l'événement de placer le point qui déclenche le code, mais je n'ai pas tout (rien :-/) compris avec les "handler"

Hors ligne

 

#5 Mon 27 April 2009 16:17

sdauphin
Participant occasionnel
Date d'inscription: 30 Aug 2009
Messages: 20

Re: placer un symbol sur une carte puis lancer un code mapbasic

c'est désespérant, je n'ai toujours pas trouvé...

si j'utilise "Run Menu Command 1711", je ne vois pas comment lancer ma procédure au moment du clic sur la carte, je ne suis pas sûr que cela soit possible en fait.
il y a une fonction pour écouter l'utilisation d'un bouton ? j'ai essayé avec commandinfo(CMD_INFO_TOOLBTN), mais sans succès...

Hors ligne

 

Pied de page des forums

Powered by FluxBB