#1 Fri 14 September 2007 17:28
- Marjo
- Juste Inscrit !
- Date d'inscription: 14 Sep 2007
- Messages: 5
Modification d'un objet texte
J'ai une couverture de txt, mais les noms de lacs sont en minuscule et j'aimerais changer le "l" pour un "L" majuscule.
Qqun sait qu'elle commande map basic utiliser pour remplacer une lettre dans un objet texte. J'ai fait ceci mais ça ne fonctionne pas ))
Include "MAPBASIC.DEF"
Include "MENU.DEF"
declare sub main
dim i as smallint
dim objText as object
sub main
select obj from test into temp
fetch first from temp
objText = temp.obj
if objectinfo(objText,OBJ_INFO_TEXTSTRING)like "lac %" then
objText = "L" + right$(objectinfo(objText,OBJ_INFO_TEXTSTRING),len(objectinfo(objText,OBJ_INFO_TEXTSTRING))-1)
end if
for i=1 to (tableinfo(temp,TABLE_INFO_NROWS)-1)
fetch next from temp
if objectinfo(toto,OBJ_INFO_TEXTSTRING) like "lac %" then
objText = "L" + right$(objectinfo(objText,OBJ_INFO_TEXTSTRING),len(objectinfo(objText,OBJ_INFO_TEXTSTRING))-1)
end if
next
end sub
merci pour l'aide )))
Hors ligne
#2 Fri 14 September 2007 18:06
- Cartosig
- Participant assidu
- Date d'inscription: 16 Oct 2006
- Messages: 222
Re: Modification d'un objet texte
La syntaxe n'est pas correcte.
Il faut utiliser Alter Object pour modifier les propriétés d'un objet, car en effet on n'instancie pas une variable objet texte avec un "=" suivi d'une chaine de caratère, mais on fait apel à une fonction qui permet de modifier les propriétés d'un objet.
Récupérez votre chaine de caractère dans une string avec ObjectInfo, modifiez la à votre guise et mettez la dans une variable texte, puis modifier l'objet avec la nouvelle string.
Alter Object objText (OBJ_INFO_TEXTSTRING, new_string)
PS : je n'ai pas lu tout le code en détail il y a peut etre d'autres erreurs.
Dernière modification par Cartosig (Fri 14 September 2007 18:09)
Hors ligne
#3 Fri 14 September 2007 18:07
- FloDumont
- Participant occasionnel
- Lieu: Bamako
- Date d'inscription: 2 Apr 2007
- Messages: 34
Re: Modification d'un objet texte
Bonjour,
Je ne sais pas si j'ai bien compris tout ton problème, mais s'il s'agit tout simplement de mettre une majuscule à la première lettre des champs de la colonne contenant le nom de tes lacs, va dans le menu déroulant table / mettre à jour cette colonne "nom des lacs" avec la fontion Proper$(nom des lacs). Et ton "l" se transforme en "L". Sauvegarde ta table et le tour est joué.
J'espère que c'est ce que tu cherchais...
Florence
Hors ligne
#4 Wed 19 September 2007 17:46
- Marjo
- Juste Inscrit !
- Date d'inscription: 14 Sep 2007
- Messages: 5
Re: Modification d'un objet texte
Merci pour l'info pour Alter Object
Mais j'ai encore un problème
Voici mon code maintenant :
for i=1 To 6
fetch next from temp
if objectinfo(objText,OBJ_INFO_TEXTSTRING)like "lac %" then
Texte = UCase$(left$(objectinfo(temp.obj,OBJ_INFO_TEXTSTRING),1)) + right$(objectinfo(temp.obj,OBJ_INFO_TEXTSTRING),len(objectinfo...)
Alter Object objText
info OBJ_INFO_TEXTSTRING,Texte
Le problème c'est que la variable texte contient l'information dont j'ai de besoin mais je suis pas capable de la récupérer avec ma variable Object.
Merci pour l'aide.
Hors ligne
#5 Wed 19 September 2007 18:01
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Modification d'un objet texte
Bonjour,
Sans le code en détail, comme le disais Cartosig, difficile de se faire une idée ...
Mais pourquoi du code quand on peut faire ça simplement, comme l'a indiqué FloDumont ??
Hors ligne
#6 Wed 19 September 2007 19:30
- Marjo
- Juste Inscrit !
- Date d'inscription: 14 Sep 2007
- Messages: 5
Re: Modification d'un objet texte
Parce que ce n'est pas dans ma table que je veux les changer , mais c'est dans ma couverture texte.
0
Hors ligne
#7 Wed 19 September 2007 20:20
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Modification d'un objet texte
Parce que ce n'est pas dans ma table que je veux les changer , mais c'est dans ma couverture texte...
C'est quoi une "couverture texte" ?? Des étiquettes ??
Pourtant votre code commence bien par un select, qui ne peut concerner qu'une table
Alors que des étiquettes n'existent que dans un wor
Pourriez vous m'éclairer ??
Hors ligne
#8 Wed 19 September 2007 20:38
- Marjo
- Juste Inscrit !
- Date d'inscription: 14 Sep 2007
- Messages: 5
Re: Modification d'un objet texte
Oki je me suis mal expliquée.
j'ai une couverture de toponyme de lac, ce ne sont pas des labels affiché à partir d'un champs de ma table, mais bien des objets texte.
J'ai a peu près 35 000 objets texte qui commence par une minuscule et que je veux transformer en majuscule.
Proper$ fonctionne quand je veux le changer dans un champs de ma table, mais pour ce qui est de mes objets ça ne fonctionne pas.
Dans mon code ma variable Texte qui est en string est correct (elle contient le nom du lac en majuscule)
Ce que je ne sais pas c'est comment faire maintenant c'est pour l'appliquer à mon objet.
Jespère que c'est plus clair O
Hors ligne
#9 Wed 19 September 2007 23:57
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Modification d'un objet texte
Ca commence à être clair...
On ne peut pas utiliser Alter Object
Il faut passer par un Update ET un CreateText() (ce qui nécessite de fournir de nouvelles variables)
Code:
Include "MAPBASIC.DEF" Include "MENU.DEF" declare sub main dim i as smallint dim objText as object dim Texte as String dim ancreX,ancreY,angletikett as float '-------- sub main 'soit la table etikett; je ne passe pas par une sélection 'mais je travaille sur la table originale (ou une copie !!) for i=1 to (tableinfo(etikett,TAB_INFO_NROWS)) 'attention: pas TABLE_INFO_NROWS comme vous l'écriviez... fetch Rec i from etikett objText = etikett.obj 'if objectinfo(objText,OBJ_INFO_TEXTSTRING)like "lac %" then 'Texte = UCase$(left$(objectinfo(objText,OBJ_INFO_TEXTSTRING),1)) + right$(objectinfo(objText,OBJ_INFO_TEXTSTRING),len(objectinfo(objText,OBJ_INFO_TEXTSTRING))-1) 'je saute la condition 'lac' car je n'ai pas de tels noms; j'utilise aussi proper$() ' il faut remettre en circuit cette condition 'lac' pour votre version ' et voir si l'usaage de proper$() vous convient, sinon revenir à votre façon de définir Texte Texte = Proper$(objectinfo(objText,OBJ_INFO_TEXTSTRING)) ancreX=objectgeography(objText,OBJ_GEO_TEXTLINEX) ancreY=objectgeography(objText,OBJ_GEO_TEXTLINEY) angletikett=objectgeography(objText,OBJ_GEO_TEXTANGLE) ' le update et createtext (5 paramètres) à utiliser Update etikett Set obj = CreateText(FrontWindow(), ancreX, ancreY, Texte, angletikett, 0, 0) Where Rowid=i 'end if next end sub
Hors ligne
#10 Sat 22 September 2007 10:46
- Maurice
- Membre
- Lieu: Montpellier
- Date d'inscription: 5 Sep 2005
- Messages: 5331
Re: Modification d'un objet texte
Pas de nouvelle = bonne nouvelle ??
Hors ligne
#11 Thu 11 October 2007 19:29
- Marjo
- Juste Inscrit !
- Date d'inscription: 14 Sep 2007
- Messages: 5
Re: Modification d'un objet texte
Merci beaucoup pour l'information ... tu est mon sauveur
Dsl pour le délai de réponse ))
Hors ligne