#1 Thu 02 February 2006 17:01
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
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