#1 Mon 28 January 2002 20:38
- Laurent
- Invité
Récupérer la position du curseur
Bonjour,
J'ai un petit probleme avec l'utilisation du commandInfo et des ToolButton
sur une fenetre carte ok mais sur une fenetre donnees (Browse) rien.
je devrais obtenir la colonne (CMD_INFO_X) et le Row (CMD_INFO_X)
ToolButton
DrawMode DM_CUSTOM_POINT
Cursor MI_CURSOR_CROSSHAIR
Icon 195
Calling Chercher
end sub
Sub Chercher
note CommandInfo(CMD_INFO_X)
end sub
Si quelq'un a une soluce
salut
laurent
#2 Tue 29 January 2002 20:38
- Jacques Paris
- Invité
Re: Récupérer la position du curseur
Mes excuses pour ce message assez long mais j’ai perdu la trace d’un e-mail
(perso ou babillard?) faisant remarquer qu’un « bouton-bascule »
(togglebutton) ne permettait pas de recuperer la position du curseur sur un
tableau, quoique en semble dire le fichier d’aide (ou plutot de pas en
dire). J’ai fait quelques recherches mais je n’ai pu obtenir que cette info
: seul l’outil MapBasic (present automatiquement des qu’une application
contient la sub ToolHandler) permettrait de recuperer de l’info sur une
carte, un tableau ou une mise-en-page.
Alors un premier challenge : comment combiner bouton-bascule et outil
Mapbasic? Avec un deuxieme, comment se debarrasser de l’outil MapBasic qui
reste la tant que l’application qui le nomme est active? Ma solution vaut ce
qu’elle vaut et devrait preter a controverse : il s’agit d’isoler l’
utilisation de l’outil Mapbasic dans un mbx ouvert et ferme par le
bouton-bascule .
Un autre chalenge est plus theorique. MI enonce clairement qu’une procedure
« ----handler » ne devrait pas changer le focus de l’interface graphique
(GUI) donc ne devrait pas contenir d’enonces comme Note, Print (directement
a la boite de messages), Dialog. J’ai eu en effet de serieux problemes (MI
disparaissant sans avertissement ni trace) en cliquant sur le OK d’une note
affichee par SelChangedHandler alors qu’une carte etait en cours d’edition.
D’ou ma recommandation : ne se servir du ---handler que pour recuperer les
donnees voulues et pour appeler une sub qui les traitera.
Voici un exemple, pas trop long et qui donne une bonne idee de ce que j’ai
essaye d’expliquer
Programme principal
include mapbasic.def
include Icons.def
declare sub main
declare sub chercher
dim status as logical
sub main
alter buttonpad ID 3 add
separator
togglebutton
Icon 195
calling Chercher
status=false
end sub
Sub Chercher
if not status then
Run application XYposition.MBX
status=true
else
Terminate application XYPosition.MBX
status=false
end if
end sub
Programme special
include mapbasic.def
declare sub Main
declare sub ToolHandler
declare sub doit
dim xi,yi as integer
dim xd,yd as float
sub main
set coordsys layout units cm
end sub
Sub ToolHandler
yi= CommandInfo(CMD_INFO_Y)
xi= CommandInfo(CMD_INFO_X)
yd= CommandInfo(CMD_INFO_Y)
xd= CommandInfo(CMD_INFO_X)
call doit
End Sub
sub doit
if xi=xd and yi=yd then
Note Row: +str(yi)+ Chr(10) + Col: + str(xi)
else
Note X pos: +str(xd)+ Chr(10) + Y pos: + str(yd)
end if
end sub
Jacques Paris
e-mail jacques@ paris-pc-gis.com
MapBasic-MapInfo support http://www.paris-pc-gis.com