En el supuesto que envías, "Lucida Console" es una fuente de ancho fijo, por lo que resulta bastante fácil saber en ancho. Los caraceteres ocupan siempre el mismo espacio. Es muy distinto el caso de "Arial" ó "Sain Serif", o cualquier otra fuente de ancho variable.
Salvo el caso de fuentes de ancho fijo, la cantidad de pixeles es extremadamente variable.
cPala=REPLICATE("M",30) necesistaría unos 252 pixeles
bPala=REPLICATE("i",30) necesitaría unos 63 píxeles
Para determinar el ancho de un TextBox, cuando se necesita, utilizo esta función, con bastante éxito.
Sin embargo, según las características particulares de algunos textos (combinación de mayúsculas y minúsculas, etc), por ahí se necesita un factor de corrección distinto, que coloco en el parámetro xnAdd.
Esta función utiliza TXTWIDHT() y FONTMETRIC()
***************************************************************************
Procedure Wokupas(xcTexto,xcFuente,xnTam,xcEstilo,xnAdd)
***************************************************************************
if Vartype(xcFuente)#"C"
xcFuente="Arial"
endif
if Vartype(xnTam)#"N"
xnTam=8
endif
if Vartype(xcEstilo)#"C"
if Vartype(xcEstilo)="L"
xcEstilo=iif(xcEStilo,"B","N")
else
xcEstilo="N"
endif
endif
if Vartype(xnAdd)#"N"
xnAdd=0
endif
nProm=FontMetric(6,xcFuente,xnTam,xcEstilo)
nvtex=TxtWidth(xcTExto,xcFuente,xnTam,xcEstilo)*nProm
if xnAdd=0
xnAdd=Int(nvTex/20)
endif
Return xnAdd+nvTex
ENDPROC