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 Fri 30 November 2001 21:07

JEANNOT Régis, DRE Champ Ard /DAET/MOP
Invité

MAPBASIC : alignement de texte

Bonjour

Je souhaite avec MapBasic placer du texte dans une fenetre mise en page et
aligner celui-ci sur le bord droit de la page. Le probleme est que je ne
connais pas la longueur de ce texte (c'est une variable caractere).

Comment puis-je faire? sachant que la commande CREATE TEXT utilise les
coordonnees X1,Y1 (angle superieur gauche du texte) et ignore les
coordonnees X2,Y2 (angle inferieur droit du texte). Egalement l'option
JUSTIFY RIGHT ne permet pas de positionner le texte par rapport a son
bord droit (elle permet seulement d'aligner les lignes d'un meme texte sur
sa droite).

Merci d'avance.

R.JEANNOT

regis.jeannot@texte-a-enlever.equipement.gouv.fr

 

#2 Fri 30 November 2001 21:09

Jacques Paris
Invité

Re: MAPBASIC : alignement de texte

C'est faisable mais c'est penible.

1- creer le texte avec les caracteristiques desirees dasns n'importe quelle
position dans la mise en page
2- ressaisir l'objet (c'est le dernier cree) et lire sa largeur avec
objecgeography(objet, obj_geo_maxx) - ..( ...minx)
3- modifier la position du texte en lui donnant comme x la valeur de
l'alignement a droite - sa largeur (il vaut mieux l'effacer et le recreer)

La sub suivante a pour argument TX (le texte meme) PT (sa taille en points)
XR (le x pour aligner a droite) YR (le y du texte)

sub align (byval tx as string, pt as smallint, xr,yr as float)
dim lay,a as string
dim xl,yl as float
dim o as object
dim ir as smallint
dim it,io as alias

lay=windowinfo(frontwindow(),10)
it=lay+ .rowid
io=lay+ .obj
a= create text into window frontwindow()  +tx+  ( +
5,4) (20,3) Font( +  Arial  + ,0, +pt+ ,0)
run command a
fetch last from lay
ir=it
o=io
xl=xr-objectgeography(o,3)+objectgeography(o,1)
yl=yr
delete from lay where rowid=ir

a= create text into window frontwindow()  +tx+  ( +xl+ , +yl+ )
( +xr+ , +yr+
) Font( +  Arial  + ,0, +pt+ ,0)
run command a

end sub

Jacques Paris

 

Pied de page des forums

Powered by FluxBB