#1 Wed 07 November 2007 17:28
- Nsidos
- Juste Inscrit !
- Date d'inscription: 19 Oct 2005
- Messages: 7
Paramétrage avant éxécution d'une commande mapbasic
Bonjour
Peut on éxécuter une commande mapinfo, (la 408 : créer point) par un mbx en paramétrant les variables du menu à l'avance (nom table, symbole, projection ...)
merci
Hors ligne
#2 Wed 07 November 2007 17:43
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Paramétrage avant éxécution d'une commande mapbasic
Bonjour
Le "run menu command 408" ouvrira la boite de dialogue de "Créer points..."
Peut être qu'un "alter menu dialog" effectué auparavant permettrait de "pré remplir" les cases de ce dialogue ??
Je vous laisse tester - et nous tenir au courant - en utilisant cette doc. ...
Sinon il faut faire l'équivalent "à la main" par Create Point (précédé d'un Set CoordSys...)
Hors ligne
#3 Thu 08 November 2007 11:02
- Nsidos
- Juste Inscrit !
- Date d'inscription: 19 Oct 2005
- Messages: 7
Re: Paramétrage avant éxécution d'une commande mapbasic
je voulais justement eviter la creation point par point
je vais tester les recommandations et je poste les resultats
merci et a plus
Hors ligne
#4 Thu 08 November 2007 15:25
- Nsidos
- Juste Inscrit !
- Date d'inscription: 19 Oct 2005
- Messages: 7
Re: Paramétrage avant éxécution d'une commande mapbasic
ça marche bien en 2 étapes:
1. modifier le dialog 1870 (projections)
2. modifier le dialog 3620 (création de points)
3. executer la menu commande 408 (création)
je n'arrive encore pas à valider le dialogue sans click utilisateur, mais c'est déjà bien. Attention les codes des controles à l'intérieur des dialogues n'étaient pas bon sur le site de lars nielsen pour ce qui concerne mon application.
ex du code:
Alter mapinfodialog 1870 'réglage de la projection
Control 4 value 1 'numero de rang de la liste 1
Control 5 value 118 'idem liste 2
Alter MapInfoDialog 3620
Control 4 value 1 'corespond au numero de la table dans la listbox
Control 6 value 17 'correspond au numero de colonne de la table pour x
Control 7 value 18 'correspond au numero de colonne de la table pour y
Control 8 value "57.2957795" 'multiplicateur rad vers degres pour x pour mon application
Control 9 value "57.2957795" 'multiplicateur rad vers degres pour y
Run Command 408
'executer le menu créer point - magique il est prérempli, il n'y a plus qu' à clicquer d'où mon intérêt pour passer sans intervention de l'utilisateur mais là je bloque pour l'instant
merci et a plus
Hors ligne
#5 Thu 08 November 2007 15:43
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Paramétrage avant éxécution d'une commande mapbasic
Super...
Les numéros de code sont "variables" avec les versions et je ne crois pas que Lars Nielsen soit allé au delà de MI78...
Ceci étant, même pour cette version les codes indiqués par Lars Nielsen ne sont pas ceux que vous avez (avec succès) utilisés: comment avez vous trouvé les "bons" codes et sur quelle version de MI sont-ils valides ??
Ca serait sympa de nous faire profiter de votre expérience
Restera pour être "parfait" à simuler un appui sur OK par l'utilisateur ... mais là je sêche
Dernière modification par Maurice (Thu 08 November 2007 17:07)
Hors ligne
#6 Thu 08 November 2007 17:33
- Nsidos
- Juste Inscrit !
- Date d'inscription: 19 Oct 2005
- Messages: 7
Re: Paramétrage avant éxécution d'une commande mapbasic
J'ai utilisé les listings de la doc pour identifier les n° des dialogues mapinfo.
Pour trouver les codes des control, il faut ouvrir la dll de format miresXXX.dll ou XXX est le N° de version mapinfo (à la racine de mapinfo professional) avec un editeur. Moi j'ai utilisé Resource hacker.
Ensuite pour affecter les valeurs, les possibilites dépendent du type de controle. Pour les listes déroulantes par exemple on affecte en valeur un entier correspondant au N° de rang du choix dans la liste. Pour identifier la table par exemple, on ne peut visiblement et malheureusement pas passer par son nom, mais par son N° d'ordre. Pour etre plus rigoureux que cette première ébauche il faudrait donc identifier ce rang avant de l'affecter. Pour les champs texte on peut affecter des valeurs.
Et enfin pour la projection j'ai modifié le menu dialog sur le même principe pour choisir au préalable la projection voulue pour ma couche.
Toutes ces infos (en beaucoup plus détaillé mais en anglais) sont contenues dans la doc de Jacques Paris.
Merci en espérant avoir été assez clair dans mes propos.
Hors ligne