Fecha actual Vie Mar 29, 2024 4:12 pm

Todos los horarios son UTC + 1 hora [ DST ]




Nuevo tema Responder al tema  [ 6 mensajes ] 
Autor Mensaje
NotaPublicado: Mié Oct 24, 2012 7:25 pm 
Avatar de Usuario

Registrado: Mar Oct 11, 2005 6:58 pm
Mensajes: 135
Ubicación: España
Saludos a los pocos que quedamos por aqui.

Haber si me podeis solucionar el siguiente problema:

Tengo un campo Memo que quiero sacarlo por la impresora en varias lineas y yo solo consigo sacarlo en una sola linea, sin embargo por la pantalla lo visualizo en 5 lineas.

Haber si me podeis hechar una manita.

Saludos a todos.

Fraguibo


Arriba
 Perfil  
Responder citando  
NotaPublicado: Vie Oct 26, 2012 12:12 pm 
Avatar de Usuario

Registrado: Dom Oct 09, 2005 11:26 am
Mensajes: 362
Ubicación: Salamanca - España
Fraguibo escribió:
Saludos a los pocos que quedamos por aqui.

Haber si me podeis solucionar el siguiente problema:

Tengo un campo Memo que quiero sacarlo por la impresora en varias lineas y yo solo consigo sacarlo en una sola linea, sin embargo por la pantalla lo visualizo en 5 lineas.

Haber si me podeis hechar una manita.

Saludos a todos.

Fraguibo


Tienes que utilizar MLCount y MemoLine.

Ah!, que no quedamos pocos, lo que pasa es que son tímidos.

_________________
Un saludo.
Jesús P. Melgar Velasco


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Dom Oct 28, 2012 12:06 am 
Avatar de Usuario

Registrado: Mar Oct 11, 2005 6:58 pm
Mensajes: 135
Ubicación: España
Hola Jesus, perdona si te molesto de nuevo, pero el caso es que no puedo sacar por la impresora más que una sola linea, de las varias que componen el campo "Memo".

Aqui te adjunto el codigo para que le heches un vistazo, haber que es lo que estoy haciendo mal:

Static Procedure PrintMemo(cText,nole,tale,tile,aRect)

Local nLongitudLinea:=112, nTamanoTabulador:=3
Local nLineas, nLineaActual,cLinea


aRect:=Printer:Millimeter2Printer(aRect)
Printer:Font:Name:=nole
Printer:Font:Size:=tale
Printer:Font:Bold:=tile


nLineas:= MLcount(cText, nLongitudLinea, nTamanoTabulador, .T.)

cLinea:= MEMOLINE(cText, nLongitudLinea, nLineaActual,;
nTamanoTabulador, .T.)

for nLineaActual:=1 TO nLineas

ExtTextOut(Printer:Handle,aRect[1],aRect[2],ETO_CLIPPED, ;
aRect,cLinea,Len(cLinea),0)

Next

Printer:Font:Bold:=.f.

Return

Un saludo y gracias por gastar tu tiempo conmigo.

Fraguibo


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Dom Oct 28, 2012 10:59 pm 
Avatar de Usuario

Registrado: Dom Oct 09, 2005 11:26 am
Mensajes: 362
Ubicación: Salamanca - España
Fraguibo escribió:
Hola Jesus, perdona si te molesto de nuevo, pero el caso es que no puedo sacar por la impresora más que una sola linea, de las varias que componen el campo "Memo".

Aqui te adjunto el codigo para que le heches un vistazo, haber que es lo que estoy haciendo mal:

Static Procedure PrintMemo(cText,nole,tale,tile,aRect)

Local nLongitudLinea:=112, nTamanoTabulador:=3
Local nLineas, nLineaActual,cLinea


aRect:=Printer:Millimeter2Printer(aRect)
Printer:Font:Name:=nole
Printer:Font:Size:=tale
Printer:Font:Bold:=tile


nLineas:= MLcount(cText, nLongitudLinea, nTamanoTabulador, .T.)

cLinea:= MEMOLINE(cText, nLongitudLinea, nLineaActual,;
nTamanoTabulador, .T.)

for nLineaActual:=1 TO nLineas

ExtTextOut(Printer:Handle,aRect[1],aRect[2],ETO_CLIPPED, ;
aRect,cLinea,Len(cLinea),0)

Next

Printer:Font:Bold:=.f.

Return

Un saludo y gracias por gastar tu tiempo conmigo.

Fraguibo


Hola.

Algo así, funciona...

nLineasMemo := MLCount( cMemo, 90 )

nOffSet := 0
FOR nX := 1 TO nLineasMemo
Printer:DrawText( LTrim( MemoLine( cMemo, MEMO_WIDTH, nX ) ),;
{ 17, nLinea + (( nX - nOffSet ) * 4 ), 193, nLinea + (( nX - nOffSet ) * 4 ) + 6 }, TA_LEFT )
NEXT nX

_________________
Un saludo.
Jesús P. Melgar Velasco


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Lun Oct 29, 2012 8:06 pm 
Avatar de Usuario

Registrado: Mar Oct 11, 2005 6:58 pm
Mensajes: 135
Ubicación: España
Hola Jesús, gracias por tu respuesta y por tu información:

Algo así, funciona...

nLineasMemo := MLCount( cMemo, 90 )

nOffSet := 0
FOR nX := 1 TO nLineasMemo
Printer:DrawText( LTrim( MemoLine( cMemo, MEMO_WIDTH, nX ) ),;
{ 17, nLinea + (( nX - nOffSet ) * 4 ), 193, nLinea + (( nX - nOffSet ) * 4 ) + 6 }, TA_LEFT )
NEXT nX

Aunque hay un pequeño detalle que te quiero comentar, la opción "MEMO_WIDTH", el compilador de C3 no la reconoce y da error, por lo que se tiene que sustituir por: "cLongitudLinea" y una vez rectificado quedaria de la siguiente forma:

Algo así, funciona...

Local cLongitudLinea
cLongitudLinea:= 286 // en mi caso es esta logitud, pero puede
// ser otra cualquiera.
nLineasMemo := MLCount( cMemo, 90 )

nOffSet := 0
FOR nX := 1 TO nLineasMemo
Printer:DrawText( LTrim( MemoLine( cMemo, cLongitudLinea, nX ) ),{ 17, nLinea + (( nX - nOffSet ) * 4 ), 193, nLinea + (( nX - nOffSet ) * 4 ) + 6 }, TA_LEFT )
NEXT nX

Una vez corregido este pequeño detalle funciona perfectamente.

Un saludo y gracias .

Fraguibo


Arriba
 Perfil  
Responder citando  
 Asunto:
NotaPublicado: Lun Oct 29, 2012 8:20 pm 
Avatar de Usuario

Registrado: Mar Oct 11, 2005 6:58 pm
Mensajes: 135
Ubicación: España
Hola Jesús, en el mensaje anterior como veras me he hequibocado al poner las cantidades de los parametros, los he puesto como a mi me funciona, gracias por tu respuesta y por tu información:

Algo así, funciona...

nLineasMemo := MLCount( cMemo, 90 )

nOffSet := 0
FOR nX := 1 TO nLineasMemo
Printer:DrawText( LTrim( MemoLine( cMemo, MEMO_WIDTH, nX ) ),;
{ 17, nLinea + (( nX - nOffSet ) * 4 ), 193, nLinea + (( nX - nOffSet ) * 4 ) + 6 }, TA_LEFT )
NEXT nX

Aunque hay un pequeño detalle que te quiero comentar, la opción "MEMO_WIDTH", el compilador de C3 no la reconoce y da error, por lo que se tiene que sustituir por: "cLongitudLinea" y una vez rectificado quedaria de la siguiente forma:

Algo así, funciona...

Local cLongitudLinea

cLongitudLinea:= 112 // en mi caso es esta logitud, pero puede
ser otra cualquiera.

nLineasMemo := MLCount( cMemo, 90 )

nOffSet := 0
FOR nX := 1 TO nLineasMemo
Printer:DrawText( LTrim( MemoLine( cMemo, cLongitudLinea, nX ) ),{ 17, nLinea + (( nX - nOffSet ) * 4 ), 286, nLinea + (( nX - nOffSet ) * 4 ) + 6 }, TA_LEFT )
NEXT nX

Una vez corregido este pequeño detalle funciona perfectamente.

Un saludo y gracias .

Fraguibo


Arriba
 Perfil  
Responder citando  
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 6 mensajes ] 

Todos los horarios son UTC + 1 hora [ DST ]


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro
No puede enviar adjuntos en este Foro

Buscar:
Saltar a:  
cron