Gracias paco ya termine mi programa y lo hice asi
Claro que a veces no lo saca bien centrado creo q depende de la cantidad de texto que haya pero si esta aceptable
Lo raro es que tengo q ponerlo en negativo al ptje del font para que calcule la anchura en pixeles correctamente al menos me parece
porque con valor positivo sale otro numero... no entiendo muy bien como trabajo pero en fin
Gracias
FUNCTION RRotulo()
LOCAL cfont, cCad1, cCad2, cCad3, aTam:={}, aCoord:={}, nfilpix, nfilcm, nfilmm, nancho
local ntamp, x, nanchotexto, nanchohoja, lok, nx
local aLen:={}, nMax, cCadlarga, i, ncolpix, ncolmm, ncolcm
cCad1:=alltrim(DATOS->CliRot)
cCad2:=Alltrim(DATOS->DirRot)
cCad3:=upper(Alltrim(UBICA->Descri))
aLen:= {len(alltrim(cCad1)), len(alltrim(cCad2)), len(alltrim(cCad3))}
nMax:= Max(len(alltrim(cCad1)), len(alltrim(cCad2)))
nMax:= Max(nMax, len(alltrim(cCad3)))
for i:=1 to 3
IF aLen[i]=nMax
exit
endif
next
cCadlarga:= "cCad"+Str(i,1)
PRINT oPrn NAME "ROTULO" PREVIEW
cFont := "Arial"
oPrn:SetPage(1)
oPrn:SetLandscape()
DEFINE FONT oFont NAME "ARIAL" SIZE 0, -45 BOLD OF oPrn
nanchohoja:=oPrn:nHorzRes()
Do Case
Case i=1
nanchotexto:=oPrn:GetTextWidth( cCad1, oFont )
Case i=2
nanchotexto:=oPrn:GetTextWidth( cCad2, oFont )
Case i=3
nanchotexto:=oPrn:GetTextWidth( cCad3, oFont )
EndCase
aCoord:= oPrn:Cmtr2Pix( 27.94, 21.59 )
ncolpix:=int(aCoord[1]/2) // mitad de col en pixeles
ncolmm:= ncolpix * 25.4 / oPrn:nLogPixely() // convierto los pixeles en mm
ncolcm := ncolmm/10 // convierto los mm en cm.
if nanchotexto > nanchohoja
lok:=.t.
DO WHILE lok
FOR x := 44 to 1 STEP -0.5
oFont := Nil
nx:=x*-1
DEFINE FONT oFont NAME "ARIAL" SIZE 0, (nx) BOLD OF oPrn
Do Case
Case i=1
nanchotexto:=oPrn:GetTextWidth( cCad1, oFont )
Case i=2
nanchotexto:=oPrn:GetTextWidth( cCad2, oFont )
Case i=3
nanchotexto:=oPrn:GetTextWidth( cCad3, oFont )
EndCase
IF nanchotexto < nanchohoja
lok:=.f.
EXIT
ENDIF
NEXT
ENDDO
else
nx:=-45
endif
DEFINE FONT oFont NAME "ARIAL" SIZE -35, (nx) BOLD OF oPrn
PAGE
oPrn:CmSay(6.5,nColcm,cCad1, oFont,,,,2)
oPrn:CmSay(9,nColcm,cCad2, oFont,,,,2)
oPrn:CmSay(11.5,nColcm,cCad3, oFont,,,,2)
ENDPAGE
ENDPRINT
oFont := Nil
oPrn := Nil
RETURN Nil