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é ?

#1 Tue 22 April 2014 11:15

François063
Participant occasionnel
Lieu: aubieres
Date d'inscription: 20 Nov 2008
Messages: 11

MapInfo 7.5 probleme Etiquettes Perdues

Bonjour à tous,
Je rencontre un problème avec les instructions LabelFindByID() LabelFindFirst() LabelFindNext()
Utilisateur de MapInfo 7.8 et MapBasic 7.5

Dans le cadre de l'analyse de données "traits" étiquetés je modifie les étiquettes associées au trait pour les mettre de la même couleur (association visuelle)

jusqu'à présent j'utilisais la commande

ADD Map Window WinId Layer TPress(i).TACarte(l).SimpNom
Set Map Window WinId Layer TPress(i).TACarte(l).SimpNom Label Position Above Right Font( "Arial", 257, 9, 0, 16776960 ) With Str$( Troncon )  Parallel Off Overlap On PartialSegments On Duplicates On Offset 5

où troncon contient le libellé et sans utiliser AUTO ON dans Set Map
puis, dans une sous-routine je les modifiais...

pour les enregistrements 1 à n de la table je modifiai l'etiquete Obect n par
CmdLigne = "Set Map Window " + NoFen + " Layer " + NTable + Chr$(13) + "Object " + n + " Font( " + Chr$(34) + "Arial" +             Chr$(34) + ",1,9," + NRequ + ")"

ou n correspond à l'enregistrement de NTable et NRequ correspont à la couleur à appliquer (issu de NTable)

Ayant constaté des disfonctionnements, j'en ai conclu que les étiquettes ne suivaient pas "Forcément" l'ordre des enregistrements de la table en référence

J'ai donc fait une tentative avec LabelFindFirst() LabelFindNext()
mais là aussi je rencontre des problèmes et m'adresse à vous afin de solliciter vos propositions
un LabelFindFirst() me sort la premiere etiquette qui une fois analysée me permet d'identifier l'enregistrement n de la table et donc d'obtenir la couleur à appliquer... idem avec LabelFindNext()
en passant, j'ai été amené a ajouter AUTO ON dans SET MAP
je fais maintenant une sauvegarde dans un wor avant de lancer "ModLabel" j'ai juste constaté que celles qui sont modifiées apparaissent bien dans le wor...

SAUF QUE il me manque des étiquettes...

dans la copie d'ecran jointe les étiquettes Noires ombrées de jaune ne sont pas "vues" avec LabelFindNext()

j'ai fait une tentative de recherche à l'aide de LabelFindByID()

If LabelFindByID( NoFen, NoLay, cptRows, "", TRUE ) Then

cptRows jusqu'à 32000 sans trouver d'écho

La premiere etiquette du layer posant problème m'a retourné un "0" inattendu et qui ne convenait pas
je vais tester sur une autre machine qui fonctionne sous XP plutôt que sur Vista mais sans grand espoir

les volumes manipulés sont de l'ordre
de 2 à 3000 etiquettes automatiques pour 600 modifiées sur plusieurs layer sachant qu'il n'y a pas de mélange automatique/modifié sur un layer, c'est ou l'un ou l'autre, l'utilisateur n'a la main qu'en fin de traitement

Voila... des idées ? des pistes ?
je ne suis pas familiarisé avec LabelFind alors peut-être ???

Merci pour vos éclairages

François

le meme jour 14h00
Questions :
LabelFindFirst a-t-il besoin d'un délai avant d'être représentatif
le fait de lancer ModLabel juste après Set Map est-il la cause de mes ennuis ?
Set Map Window WinId Layer TPress(i).TACarte(l).SimpNom Label Position Above Right Font( "Arial", 1, 4, 0, 16776960 ) With Str$( Troncon ) Auto On Parallel Off Overlap On PartialSegments On Duplicates On Offset 5
        Call ModLabel( TPress(i).TACarte(l).SimpNom, WinId, "SectPDF" )

Dans la trace je constate que dans les trois fenetres construites
la premiere passe de façon idéale (Quitte ModLabel CPTENR=0 qui restent à traiter), la seconde n'est pas concernée, et dans la troisieme "SectPDF" les index de démarrage "NoLab" ne débutent plus à 1 et cptEnr non nul

ne pratiquant pas le latin, je ne peux prétendre l'avoir perdu, mais tout de même...

Dernière modification par François063 (Tue 22 April 2014 14:44)


Fichier(s) joint(s) :
Pour accéder aux fichiers vous devez vous inscrire.

Hors ligne

 

Pied de page des forums

Powered by FluxBB