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!

#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 sad
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 smile

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

Maurice a écrit:

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?

Maurice a écrit:

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


chiche31 a écrit:

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 sad
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 smile

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 sad
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 smile

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 smile
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

 

Pied de page des forums

Powered by FluxBB