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

Printemps des cartes 2024

#1 Thu 02 February 2006 17:01

Carreau
Participant occasionnel
Lieu: Paris
Date d'inscription: 13 Jan 2006
Messages: 29
Site web

Pb d'identifiant de fenetre Legende

Bonjour,

Je rencontre un problème d'identifiant de fenetre mais uniquement au moment de la création d'une fenetre de légende par programmation.

Ma fenetre carte d'origine possède 59 couches logiques et s'appelle "Barrage,Ecluse,...,Surface_Hypso Carte" (39 caractères)

Les lignes de code MapBasic sont les suivantes :

Code:

...
iMapWin = FrontWindow()
...
sCmdTxt1 = "Create Cartographic Legend From Window " + iMapWin 
+ " Position (" + ... + ") Width " + ... + " Height " + ... 
+ " Window Title ""Legende"" Scrollbars On Portrait Default Frame Title ""#"" Font (""Arial"",3,8,0) Default Frame Style ""(%)"" Font(""Arial"",0,7,0)"

For i = 1 To MapperInfo( FrontWindow() , MAPPER_INFO_LAYERS )
  sCmdTxt2 = sCmdTxt2 + "Frame From Layer " + i + " Using Column object Label default"
'récupère tous les identifiants de couches utiles par une boucle
Next

sCmdTxt1 = sCmdTxt1 + sCmdTxt2
'concatenation de la chaine de commande complete

Run Command sCmdTxt1
'execution de la chaine de commande

MapInfo me retourne l'erreur suivante :
"Identifiant de fenetre 23 invalide"

Je n'ai d'ouvert que deux fenetres cartes.
'23' n'est pas le nombre total de fenetres NumAllWindows() (fenêtre de légende comprise)
Le nom de la fenetre légende devrait être quelque chose comme :
"Legende de Barrage,Ecluse,...,Surface_Hypso Carte"

Merci de vos suggestions et remarques (et solutions !    :-)    )
Jérôme

Dernière modification par Carreau (Thu 02 February 2006 18:24)

Hors ligne

 

#2 Fri 03 February 2006 09:14

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: Pb d'identifiant de fenetre Legende

Bonjour,
Testez donc votre sCmdTxt1 avant (à la place) du Run par un print sCmdTxt1....et tenez nous au courant!!!

Hors ligne

 

#3 Wed 08 February 2006 14:34

Carreau
Participant occasionnel
Lieu: Paris
Date d'inscription: 13 Jan 2006
Messages: 29
Site web

Re: Pb d'identifiant de fenetre Legende

Bonjour,

J'ai trouvé ma panne !

Ce qu'il fallait comprendre, c'est que la fenêtre de légende est un conteneur de fenêtres de légende pour chacune des couches.
Le message "Identifiant de fenetre 23 invalide" signifie que la fenêtre de légende de la couche 23 n'a pas de dimension car les objets de cette couche ne peuvent pas être affichés.

Il suffisait donc (la solution est simple quand on a la réponse) de tester la nature des objets de chacune des couches et s'assurer qu'il ne s'agit pas de 'Symbol' dont le code est '31' (symbole invisible 'N') ni de 'Line' dont la forme est 1 (line invisible 'N') ni de 'Brush' dont la forme est 1 (idem). Le code du test ressemble à
'StleAttr(LayerInfo(WindowId(Carte),numLayer,LAYER_INFO_OVR_SYMBOL),SYMBOL_CODE)=31
Dans l'affirmative du test, passer à la couche suivante.

La fenêtre Légende générale avec la fenêtre légende de la première couche se créé par un
'Create Cartographic Legend From Window WindowId(carte) ... Frame From Layer 1 ...'
Les fenêtre légende des couches suivantes s'ajoutent à la première par un
'Add Carrtographic Frame Window WindowId(Legende) ... Frame From Layer n ...'

Voilà voilà
Bonne après midi à tous. Merci de vos suggestions.
Jérôme

Hors ligne

 

#4 Fri 18 September 2009 23:01

celine
Membre
Lieu: Guadeloupe
Date d'inscription: 15 Sep 2005
Messages: 137

Re: Pb d'identifiant de fenetre Legende

Bonsoir,

J'ai trouvé ma panne aussi, grace à ce vieux message !

Merci les archives GeoRezo ! ;-)

Hors ligne

 

Pied de page des forums

Powered by FluxBB