FoxPro/Visual FoxPro - No me he Explicado bien

   
Vista:

No me he Explicado bien

Publicado por Roberto (33 intervenciones) el 27/10/2010 21:26:25
Hola amigos.

Uso el campo memo porque al momento de imprimir en el formato de la factura, este se cuadra en forma automatica, no hay necesidad de cuadrar linea por linea, asi, no aparecerian palabras entrecortadas entre lines ni espacios al final de la linea.

Lo pude haber hecho armando linea por linea, pero por la premura del tiempo tuve que usar el campo memo.

Si alguno de ustedes tuviera una rutina para armar cada linea y ocupar los 90 espacio que hay por linea y rellenarlo con valores numericos y caracteres, para que quede centrado en el formato se los agradeceria.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:No me he Explicado bien

Publicado por victor perez (278 intervenciones) el 28/10/2010 00:45:11
Hola,

Sigo sin entender el problema.

Usualmente, a lo que te refieres es a la elaboracion de Documentos de Recibo de Dinero.

Yo tengo algo similar en la clinica y no uso memo.

Tengo algo asi:

----------------------------------------------------------------------------------------------------------------
Fecha: [FECHA]

Hemos recibido de [NOMBRES] [APELLIDOS] ,
la suma de B/.[monto]
[monto en letras]

[CONCEPTO]

[RETRASO]

________________________
[NOMBRE DE USUARIO]
CLINICA DR. PEREZ
----------------------------------------------------------------------------------------------------------------

Ahora en el formulario puedes tener un campo que se llene solo cuando el pago es un atraso (como explicabas). En el reporte pones en las condiciones de este campo que se imprima solo si NO esta vacio.

Los campos NOMBRES APELLIDOS tienen una longitud fija maxima de 30, por lo que puedes usar un ALLTRIM(NOMBRES) + ALLTRIM(APELLIDOS) y saber que los espacios maximos ocupados por ambos no seran mayores a 60.

Espero que esto te ayude si es lo que buscas.

Victor,
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No me he Explicado bien

Publicado por Juanma Cruz (508 intervenciones) el 29/10/2010 14:13:37
Insisto, debe haber mejores maneras de solventar tu necesidad.

Pero no será por código en este foro, jejejeje, ahí te va algo:


_screen.FontName="Courier New"
Text to lll NOSHOW
Uso el campo memo porque al momento de imprimir en el formato de la factura, este se cuadra en forma automatica, no hay necesidad de cuadrar linea por linea, asi, no aparecerian palabras entrecortadas entre lines ni espacios al final de la linea.
EndText
? '*****************************'
? Dividir(lll,30)
? '*****************************'
Return

Function Dividir
Lparameters lMemo, lExtension
Local lRetorno, lLinea, nPivot
lRetorno= ''
Do WHILE Len(lMemo)>0
lLinea= Substr( lMemo, 1, lExtension )
nPivot= Rat(' ',lLinea)
If nPivot=0
nPivot= lExtension
EndIf
lLinea=Substr( lMemo,1,nPivot)
lMemo= Substr( lMemo,nPivot+1)
lRetorno= lRetorno+ Justifica(lLinea,lExtension) + Chr(13)+Chr(10)
EndDo
Return (lRetorno)

Function Justifica
Lparameters lTexto, lExtension
Local nPalabras, nFaltante, nEntero, nModulo
lTexto=Alltrim(lTexto)
nPalabras= GetWordCount(lTexto)
If nPalabras>1
nFaltante= lExtension- Len(lTexto)
nEntero= Int(nFaltante / (nPalabras-1) )
nModulo= Iif( nEntero>0, Mod(nFaltante,(nPalabras-1)), nFaltante)
For nX= (nPalabras-1) to 1 step -1
If Len(lTexto)>lExtension
Exit
EndIf
nPivot= At( ' ', lTexto, nX)
lTexto= Stuff( lTexto, nPivot,0, Replicate(' ', nEntero+iif( nModulo>0,1,0) ))
nModulo = nModulo - 1
Next
EndIf
Return (lTexto)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar