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!

#1 Mon 23 July 2012 14:39

Cedricc
Participant actif
Date d'inscription: 22 Apr 2010
Messages: 105

[MB 8.5] Vérifier la présence de couche

Bonjour à tous,

Je crée actuellement un programme mapbasic qui selectionne une couche et la rend modifiable.
Avant cela le programme doit vérifier si la couche est présente dans la carte active, et si non la rajouter. C'est là que je bloque, quoiqu'il arrive il me rajoute la table même si elle déjà présente. Voici mon code :


Code:

nbre_couche = mapperinfo(frontwindow(),mapper_info_layers)
for i=1 to nbre_couche
If layerinfo(frontwindow(), i, layer_info_name)<>"ma_table"
    then add map Layer "ma_table"
    exit for
end if
next


    Set map layer "ma_table"
    Editable on


Si quelqu'un a une idée pour qu'il ne me rajoute la table que si elle n'est pas déjà présente...

Dernière modification par Cedricc (Mon 23 July 2012 16:16)

Hors ligne

 

#2 Mon 23 July 2012 17:24

sylvain poupard
Participant assidu
Date d'inscription: 19 Mar 2009
Messages: 362

Re: [MB 8.5] Vérifier la présence de couche

Bonjour,

En attendant une meilleure réponse voici une piste...

Avec

Code:

for i=1 to nbre_couche

vous faîtes le test de la demande d'ajout pour chaque table ouverte.
Donc forcément mapbasic trouve une table ouverte qui est différente de "ma_table", et ouvre donc "ma_table".

Pour moi le problème viendrait de votre approche...mais je n'en ai pas d'autre à proposer!

Bon courage.

Hors ligne

 

#3 Mon 23 July 2012 17:26

Damien BEAUSEIGNEUR
Participant assidu
Lieu: meyzieu
Date d'inscription: 5 Sep 2005
Messages: 425

Re: [MB 8.5] Vérifier la présence de couche

Bonjour,

l'idée est bonne, actuellement dans ton code, et ceci dès la première boucle tu ajoutes ta table.
Avant d'ajouter il aurait fallu le tester sur toutes tes couches.

Code:

num_couche = 0
for i=1 to nbre_couche
If layerinfo(frontwindow(), i, layer_info_name)="ma_table" 
   then num_couche = i
   exit for
end if
next
if num_couche = 0 
   then add map layer "ma_table"
end if

Hors ligne

 

#4 Tue 24 July 2012 11:19

Cedricc
Participant actif
Date d'inscription: 22 Apr 2010
Messages: 105

Re: [MB 8.5] Vérifier la présence de couche

Merci pour vos réponses.
Je n'ai pas pensé à prendre le problème dans le sens de Damien, effectivement ça marche. Comme quoi il faut savoir utiliser des moyens détournés parfois. Et encore merci de m'avoir débloqué.

Hors ligne

 

Pied de page des forums

Powered by FluxBB