Saludos estimado colega:
Puede ser que yo esté equivocado, proba llenando la propiedad InputMask del Combobox con tantas X como máximo de dígitos pueda tener el contenido.
Bendiciones.
Carlos Alfaro
LOCAL lnMax,lcMaxLenght,lnRec,lcPatron,lnAlternativa,;
lcFontName,lnFontSize,lnColumns
lnMax=0
lcPatron=""
lcFontName="Arial"
lnFontSize=8
lnAlternativa=0
lnColumns=1
SELECT NOMBRE,CUIT FROM CLIENTES WHERE !DELETED();
ORDER BY nombre into cursor pepa
IF lnAlternativa=0
* Buscar el valor más ancho
SCAN
IF LEN(TRIM(nombre))>lnMax
lnMax=LEN(TRIM(nombre))
lcPatron=TRIM(nombre)
ENDIF
ENDSCAN
GO top
ELSE
* Utilizar un patrón aproximado
LcPatron=LEFT(REPLICATE("ADIJTZ",10),LEN(pepa.nombre))
ENDIF
WITH THIS
.Rowsourcetype=2
.ROWSOURCE="pepa.nombre,cuit"
.ControlSource="pepa.nombre"
.ColumnCount=lnColumns
.ColumnWidths=TRANSFORM(Get_Pixel(lcPatron,lcFontName,lnFontSize));
+IIF(lnColumns=1, "" , ","+TRANSFORM(Get_Pixel("99-99999999-9",lcFontName,lnFontSize)))
ENDWITH*!* -----------------
Procedure Get_Pixel
*!* ----------------
LPARAMETERS tcString,tcFontName,tnFontSize,tcEstilo,tnAddSpace
*!* Devuelve el ancho en pixeles que ocupa tcString para la fuente
*!* tcFontName, de tamaño tnFontSize y en estilo tcEstilo
*!* tnAddSpace: opcional (+/-)
#DEFINE _ESTILO_ "BINOQS-TU"
LOCAL lnPixels, i ,lcEstilo,lcSub
lcEstilo=""
lnPixels=0
tcFontName=EVL(tcFontName,"Arial")
tnFontSize=EVL(tnFontSize,8)
if Vartype(tcEstilo)#"C"
tcEstilo=IIF(Vartype(tcEstilo)="L",iif(tcEstilo,"B","N"),"N")
ENDIF
tcEstilo=ALLTRIM(UPPER(EVL(tcEstilo,"N")))
FOR i=1 TO LEN(tcEstilo)
lcSub=SUBSTR(tcEstilo,i,1)
lcSub=IIF(lcSub $ _ESTILO_,lcSub,"N")
IF AT(lcsub,lcEstilo)=0
lcEstilo=LcEstilo + lcSub
ENDIF
NEXT
lnPixels=TxtWidth(tcString,tcFontName,tnFontSize,lcEstilo) * ;
FontMetric(6,tcFontName,tnFontSize,lcEstilo)
Return lnPixels + EVL(tnAddSpace , INT(lnPixels/20) )
ENDPROC