Pages: 1 2
- Sujet précédent - [MapBasic 9.0] Afficher des données extraites d'un fichier - Sujet suivant
#31 Wed 10 September 2008 14:27
- chiche31
- Participant actif
- Date d'inscription: 20 Aug 2008
- Messages: 64
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
Soit le code suivant :
Code:
Set Map Layer 0 Editable On Selectable On ' la couche dessin en édition et sélectable dim mypnt as integer dim ligne as integer mypnt=searchpoint(frontwindow(),-172.597226,76.122766) 'Insert Into cosmetic1 (Obj) values (CreateText(frontwindow(), -122.597226, 76.122766, "Sales Map", 0,0,0) ) ligne=searchinfo(1,2) Create Point Into Window WindowId(FrontWindow()) (-122.597226, 76.122766) Symbol ("AFR.bmp",255,30,1) delete object from cosmetic1 where rowid=ligne Set Map Layer 0 Editable Off
Chez moi, quand je l'exécute la première fois, l'image s'affiche et s'efface (même s'il y a toujours le problème de refresh). Par contre la seconde fois, elle s'affiche mais ne s'efface pas. C'est pourtant le même code que le votre, non?
Et à quoi correspond cosmectic1? Est-ce qu'elle est générique?
Dernière modification par chiche31 (Wed 10 September 2008 14:35)
Hors ligne
#32 Wed 10 September 2008 15:25
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
Ben...pas vraiment
Il manque set coordsys table ma_table toujours utile
Et vous cherchez le point par searchpoint anavt même qu'il soit créé par Create Point !!
Ca risque pas de marcher
Hors ligne
#33 Wed 10 September 2008 15:36
- chiche31
- Participant actif
- Date d'inscription: 20 Aug 2008
- Messages: 64
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
Effectivement ça marche maintenant, merci beaucoup!
Par contre pour ma culture perso, pouvez vous m'expliquer ce que font les fonctions searchinfo et searchpoint ?
Hors ligne
#34 Wed 10 September 2008 16:03
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
Vous n'avez pas Mapbasic ?? C'est dans l'aide...
SearchPoint(map_window_id,x,y) cherche un objet par son X,Y mais ne le sélectionne pas. Retourne un entier = nombre de points trouvés, qu'il met en mémoire
SearchInfo(attribut1, attribut2) retourne des informations sur la recherche de SearchPoint: attribut1 = le rang de l'objet (si SearchPoint en a trouvé 3, 1 questionne le premier) et attribut2 = ce qu'on questionne: 1 la table à laquelle appartient cet objet - peut être CosmeticN - ou 2 le numéro de ligne où se trouve l'objet). Là non plus, ne le sélectionne pas.
Hors ligne
#35 Wed 10 September 2008 17:24
- chiche31
- Participant actif
- Date d'inscription: 20 Aug 2008
- Messages: 64
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
Ok noté.
Je crée deux MBX distincts. Un dans lequel je mets ce code :
Code:
Create Point Into Window WindowId(FrontWindow()) (147, 76) Symbol ("AFR.bmp",255,30,1)
Et l'autre dans lequel je mets ce code :
Code:
mypnt=searchpoint(frontwindow(),147,76) ligne=searchinfo(1,2) delete object from cosmetic1 where rowid=ligne
Quand je les exécute l'un après l'autre, le symbole affiché par le premier n'est pas effacé. Est-ce normal? Et si oui, y'a t-il une solution?
Dernière modification par chiche31 (Wed 10 September 2008 17:25)
Hors ligne
#36 Wed 10 September 2008 21:06
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
Est-ce qu'il y a un Set CoordSys Table ma_table dans chacun
Et SURTOUT est ce qu'il y a un Set Map Layer 0 Editable On Selectable On avant les 3 lignes du second ??
Hors ligne
#37 Thu 11 September 2008 16:21
- chiche31
- Participant actif
- Date d'inscription: 20 Aug 2008
- Messages: 64
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
Est-ce qu'il y a un Set CoordSys Table ma_table dans chacun
Effectivement elle n'y ait pas. Mais je ne vois pas dans quel cadre j'en ai besoin. A quoi sert-elle?
Et SURTOUT est ce qu'il y a un Set Map Layer 0 Editable On Selectable On avant les 3 lignes du second ??
Oui
Pour rafraîchir une page, j'ai trouvé le code suivant :
Code:
Set Map Redraw Off Set Map Layer GetLayerId("EarthView") Display Off Set Map Layer GetLayerId("EarthView") Display Graphic Set Map Redraw On
Par contre je ne comprends pas bien son fonctionnement. Pouvez-vous m'expliquer à quoi il sert et son mode de fonctionnement?
Dernière modification par chiche31 (Thu 11 September 2008 16:44)
Hors ligne
#38 Thu 11 September 2008 16:52
- Gérard parcoli
- Participant actif
- Date d'inscription: 9 Jan 2007
- Messages: 95
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
S'il s'agit de supprimer le dernier point crée dans la couche dessin :
Code:
ligne=TableInfo(COSMETIC1, 8) Select * From COSMETIC1 Where ROWID = ligne Delete object from cosmetic1 where rowid=ligne
Hors ligne
#39 Thu 11 September 2008 16:54
- chiche31
- Participant actif
- Date d'inscription: 20 Aug 2008
- Messages: 64
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
NOn, c'est n'est pas forcément le dernier point, ce serait d'avantage une "zone" (par exemple tout le côté droit de la map monde)
Hors ligne
#40 Thu 11 September 2008 17:11
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
Set Map Redraw Off MI ne redessine pas l'écran tant qu'on ne revient pas à Set Map Redraw On
Set Map Layer GetLayerId("EarthView") Display Off éteint le layer "EarthView" dont le numéro est donné par une fonction (non citée) GetLayerId("EarthView")--> renvoie le numéro du layer représentant la table "EarthView" ??
Set Map Layer GetLayerId("EarthView") Display Graphic le layer prend le look par défaut tel qu'inscrit dans la table
Si Global au lieu de Graphic: look déterminé dans le contôle des couches par l'utilisateur
Set Map Redraw On MI redessine à l'écran les changements intervenus
Vous pourriez mettre dans le code du second mbx (...?):
mypnt=searchpoint(frontwindow(),147,76)
ligne=searchinfo(1,2)
Set Map Redraw Off
delete object from cosmetic1 where rowid=ligne
Set Map Layer Cosmetic1 Display Off
Set Map Layer Cosmetic1 Display Graphic
Set Map Redraw On
NOn, c'est n'est pas forcément le dernier point, ce serait d'avantage une "zone" (par exemple tout le côté droit de la map monde)
Je ne comprends plus bien: moi je vous parle de supprimer un point créé dans la couche dessin
Pas d'éffacer une partie de la table "monde" ....
Hors ligne
#41 Thu 11 September 2008 17:39
- chiche31
- Participant actif
- Date d'inscription: 20 Aug 2008
- Messages: 64
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
Ca y est, je commence à désespérer. Hier, quand j'utilisais le code suivant :
Code:
Set Map Layer 0 Editable On Selectable On Set Style font makefont("Arial",1,8,RGB(255, 229,29),-1) Create Point Into Window WindowId(FrontWindow()) (147, 76 - offset) Symbol ("AFR.bmp",255,30,1) Insert Into cosmetic1 (Obj) values (CreateText(frontwindow(), 155, 82.6 - offset, param1 + chr$(10) + param2 + chr$(10) + param3,0,8,0) ) Set Map Layer 0 Editable Off
et qu'ensuite je faisias clic droit + "effacer couche dessin", tout ce que j'avais pu insérer s'effacer correctement. Hors aujourd'hui, ce n'est plus le cas... De plus, MapInfo m'affiche le message suivant "la table cosmetic1 n'est pas ouverte". D'ailleurs, il est étonnant que hier ça marchait, étant donné que je n'ai aucun élément appelé cosmetic1. C'est un élément générique?
Et quand j'utilise le code que vous m'avez donné :
Code:
mypnt=searchpoint(frontwindow(),147,76) ligne=searchinfo(1,2) Set Map Redraw Off delete object from cosmetic1 where rowid=ligne Set Map Layer Cosmetic1 Display Off Set Map Layer Cosmetic1 Display Graphic Set Map Redraw On
j'ai un message d'erreur qui apparaît dans mapinfo : "La couche de la vue n'est pas valide"
Au secours...
Dernière modification par chiche31 (Thu 11 September 2008 18:00)
Hors ligne
#42 Thu 11 September 2008 18:31
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
Un peit dernier...(cf plus bas)
Dans les deux cas il faut une fenêtre carte ouverte...et une table au moins dans ce mapper
Une commande Set CoordSys Table ma_table assure que les coordonnées que l'on donne seront bien comprises dans la projection de l'unique table ouverte (ou de la première)
Personnellement je suis faiigué de ce petit jeu
On ne peut pas répondre sur des bouts d'embryons de code hors contexte !
Faites vos essais dans votre coin et quand vous aurez un code complet à soumettre...ne vous génez pas (tout en expliquant l'objectif poursuivi par l'outil en développement). A ce moment je serai à nouveau disponible
Hors ligne
#43 Thu 11 September 2008 18:37
- chiche31
- Participant actif
- Date d'inscription: 20 Aug 2008
- Messages: 64
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
Je suis désolé de ce petit jeu, croyez le bien...
VOici comme vous me l'avez demandé le code complet
1er MBX :
Code:
Sub Affichage(ByVal offset as Integer, ByVal param1 as String, ByVal param2 as String, ByVal param3 as String) dim mypnt as integer dim ligne as integer Set Map Layer 0 Editable On Selectable On Set Style font makefont("Arial",1,8,RGB(255, 229,29),-1) Create Point Into Window WindowId(FrontWindow()) (147, 76 - offset) Symbol ("AFR.bmp",255,30,1) Insert Into cosmetic1 (Obj) values (CreateText(frontwindow(), 155, 82.6 - offset, param1 + chr$(10) + param2 + chr$(10) + param3,0,8,0) ) Set Map Layer 0 Editable Off End Sub
Deuxième MBX :
Code:
Sub Efface dim mypnt as integer dim ligne as integer Set Map Layer 0 Editable On Selectable On mypnt=searchpoint(frontwindow(),147,76) ligne=searchinfo(1,2) Set Map Redraw Off delete object from cosmetic1 where rowid=ligne Set Map Layer cosmetic1 Display Off Set Map Layer cosmetic1 Display Graphic Set Map Redraw On End Sub
J'appelle ces deux MBX successivement, et il les erreurs que je vous ai enoncé dans mon dernier post ("table cosmetic1 non ouverte", etc...)
Le plus étonnant est que hier, je n'avais aucun problème avec le premier MBX. Il n'y a que depuis aujourd'hui que j'ai le soucis avec la table cosmetic1.
Hors ligne
#44 Thu 11 September 2008 19:32
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
Désolé aussi mais un code complet c'est un code complet !!
Pas une Sub par ci par là, dont une qui reçoit des paramètres ... et si c'est en amont qu'un problème est apparu ??
ps: cosmetic1 est le nom générique de la couche dessin du Mapper 1...mais celle du Mapper 2, s'il y a une seconde fenêtre carte, sera cosmetic2...
Hors ligne
#45 Fri 12 September 2008 09:42
- chiche31
- Participant actif
- Date d'inscription: 20 Aug 2008
- Messages: 64
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
1er MBX complet:
Code:
Declare Sub Main Declare Sub Affichage(ByVal offset as Integer, ByVal param1 as String, ByVal param2 as String, ByVal param3 as String) '-------------------------- ' Procédure principale '-------------------------- Sub Main Dim offset as Integer Dim param1, param2, param3 as String offset = 0 Call Affichage(offset,param1,param2,param3) offset = offset + 15 End Sub '---------------------------------- ' Fonction d'affichage sur le wall '---------------------------------- Sub Affichage(ByVal offset as Integer, ByVal param1 as String, ByVal param2 as String, ByVal param3 as String) dim mypnt as integer dim ligne as integer Set Map Layer 0 Editable On Selectable On Set Style font makefont("Arial",1,8,RGB(255, 229,29),-1) Create Point Into Window WindowId(FrontWindow()) (147, 76 - offset) Symbol ("AFR.bmp",255,30,1) Insert Into cosmetic1 (Obj) values (CreateText(frontwindow(), 155, 82.6 - offset, param1 + chr$(10) + param2 + chr$(10) + param3,0,8,0) ) Set Map Layer 0 Editable Off End Sub
2nd MBX complet :
Code:
Declare Sub Main Declare Sub Efface 'Procédure principale '------- Sub Main Call Efface End Sub Sub Efface dim mypnt as integer dim ligne as integer Set Map Layer 0 Editable On Selectable On mypnt=searchpoint(frontwindow(),147,76) ligne=searchinfo(1,2) Set Map Redraw Off delete object from cosmetic1 where rowid=ligne Set Map Layer cosmetic1 Display Off Set Map Layer cosmetic1 Display Graphic Set Map Redraw On End Sub
Je récapitule :
Lorsque j'exécute le le second MBX après le premier, j'ai le message "La couche de la vue n'est pas valide" qui apparaît dans MapInfo. A ce moment là, il n'est plus posssible de faire un clic-droit + effacer la couche dessin (aucun effet).
Question subsidiaire : Comment on peut effacer un élément créé avec la fonction : "Insert Into cosmetic1 (Obj) values (CreateText(frontwindow(), 155, 82.6 - offset, param1 + chr$(10) + param2 + chr$(10) + param3,0,8,0) )"
Dernière modification par chiche31 (Fri 12 September 2008 11:07)
Hors ligne
#46 Fri 12 September 2008 15:07
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
1er MBX "complet":
Les variables param1, param2, param3 n'ont reçu aucune valeur ... !
Ce sont donc des chaines vides
De toute façon pour passer les commandes Create Point et Insert Into, qui mélangent des constantes et des variables, il faut passer par une commande interprétée. Ca donnerait:
Declare Sub Main
Declare Sub Affichage(ByVal offset as Integer, ByVal param as String)
'--------------------------
' Procédure principale
'--------------------------
Sub Main
Dim offset as Integer
Dim param1, param2, param3,param as String
offset=0 param1="toto" param2="tata" param1="titi"
param=param1+chr$(10)+param2+chr$(10)+param3
set coordsys table ma_table
Call Affichage(offset,param)
offset = offset + 15
End Sub
'----------------------------------
' Fonction d'affichage sur le wall
'----------------------------------
Sub Affichage(ByVal offset as Integer, ByVal param as String)
Dim cmd as String
Set Map Layer 0 Editable On Selectable On
Set Style font makefont("Arial",1,8,RGB(255, 229,29),-1)
cmd="Create Point Into Window WindowId(FrontWindow()) (147,76-"+offset+
") Symbol ("+chr$(34)+"AFR.bmp"+chr$(34)+",255,30,1)"
print cmd 'pour voir ...
run command cmd
cmd="Insert Into cosmetic1 (Obj) values (CreateText(frontwindow(),155,82.6-"+offset+
","+chr$(34)+param+chr$(34)+",0,8,0))"
print cmd 'pour voir ...
run command cmd
Set Map Layer 0 Editable Off
End Sub
2nd MBX "complet": Vous ne pouvez pas utiliser Set Map...Display... pour la couche dessin !! D'où a priori le message d'erreur
De plus un set coordsys table ma_table juste avant le Call efface permettra de rendre la recherche du point plus sûre ... mais je l'ai déjà dit
Hors ligne
#47 Fri 12 September 2008 15:15
- chiche31
- Participant actif
- Date d'inscription: 20 Aug 2008
- Messages: 64
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
Merci beaucoup!
Mais j'ai un message d'erreur quand je lance le second MBX après avoir mis set coordsys table ma_table juste avant Call efface : "la table ma_table n'est pas ouverte"
"
Par contre, vous n'avez pas répondu à ma question subsidiaire. Vous connaissez un moyen?
Dernière modification par chiche31 (Fri 12 September 2008 15:30)
Hors ligne
#48 Fri 12 September 2008 17:20
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: [MapBasic 9.0] Afficher des données extraites d'un fichier
Dans set coordsys table ma_table...ma_table est le nom de la table ouverte sous la couche dessin, "monde" par exemple
Question subsidiaire: exactement de la même façon qu'on efface l'objet point...on le "recherche", on questionne sa ligne et on efface la dite ligne
Hors ligne
Pages: 1 2
- Sujet précédent - [MapBasic 9.0] Afficher des données extraites d'un fichier - Sujet suivant