Justificar campo memo de report Por jgarcia (#86) a las 19:23 del 03-03-2001 Function JUST_TOT() Lparameter cadena, long_lin, fuente, altura ** Funcion para justificar izquierda y derecha de un campo memo en reportes ** Ejemplos: ** just_tot(tabla.memo,100, "Courier New", 10) ** just_tot(tabla.memo,100, "Arial", 10) ** ** Tanto el font como el size seran los fijados en el campo del diseñador de informes if LEN(cadena)=0 .or. parameters()<2 return(cadena) endif Local n, LineaTexto, espacio, nlineas, i, nueva_cad, subCadena, u_caracter cadena=Alltrim(m.cadena) SET MEMOWIDTH to m.long_lin nlineas = MEMLINES(cadena) nueva_cad="" FOR i=1 to nlineas subCadena=alltrim(MLINE(cadena,i)) u_caracter=subs(subcadena,len(subcadena),1) if m.i0 if substr(subCadena, LEN(subCadena)-n,1)=space(1) subcadena = STUFF(subCadena, LEN(subCadena)-n,0,space(1)) n=n+1 endif n=IIF(n>=LEN(subCadena),1,n+1) enddo endif nueva_cad=nueva_cad+subcadena+chr(13) ENDFOR return(m.nueva_cad) endfunc **Comentarios *La funcion TxtWidth devuelve la longitud de una expresión de caracteres con respecto al ancho promedio de carácter de una fuente. Este promedio falla cuando se introducen mayusculas en un texto cuya fuente (FontName) no es de paso fijo. Con la fuente Courier New sale correctamente (es de ancho fijo) Re: Justificar campo memo de report Por Marzo Varea (#2) a las 12:08 del 08-03-2001 Buena idea. Tan sólo observar que el MLine() funciona mucho más rápido de este modo: _MLine = 0 For i=1 to nlineas subCadena=alltrim(MLine(cadena, 1, _MLine)) que de este otro: FOR i=1 to nlineas subCadena=alltrim(MLINE(cadena,i))