¿Es posible imprimir en un report, una linea vertical?
Lo he intentado emulando lo que ya hago con Tprinter, usando un font y NESCAPEMENT 900, y aplicandolo a un SAY, pero me da error.
¿Alguien lo ha conseguido?
( SayRotated( oReport, 260, 10, ;
"Ventas ", oFont1,,, .t. ), ;
SayRotated( oReport, 150, 500, "About ", oFont2, ;
CLR_HRED, CLR_YELLOW, .F. ) )
//---------------------------------------------------------------------------//
Function SayRotated( oWnd, Y, X, cPrompt, oFont, nClrText, nClrPane, l3D )
Local hDC := oWnd:hDC
DEFAULT nClrText := CLR_HRED, l3D := .T.
IF l3D
DrawRotated( hdc, cPrompt, Y + 1, X + 1, CLR_BLACK, nClrPane, oFont )
DrawRotated( hdc, cPrompt, Y - 1, X - 1, nClrText, nClrPane, oFont )
ENDIF
DrawRotated( hdc, cPrompt, Y , X , nClrText, nClrPane, oFont )
Return Nil
//----------------------------------------------------------------------------
Static Function DrawRotated( hDC, cPrompt, Y, X, nClrText, nClrPane, oFont )
Local hOldFont, nOldMode, nOldClrText, nOldClrPane, nOldBkMode
nOldClrText := SetTextColor( hDC, nClrText )
if nClrPane <> Nil
nOldClrPane := SetBkColor( hDC, nClrPane )
else
nOldBkMode := SetBkMode( hDC,1 )
Endif
hOldFont := SelectObject( hDC, oFont:hFont )
TextOut( hDC, Y, X, cPrompt, Len( cPrompt ) )
SelectObject( hDC, hOldFont )
if nClrPane<>nil
SetBkColor( hDC, nOldClrPane )
else
SetBkMode( hDC, nOldBkMode )
Endif
SetTextColor( hDC, nOldClrText )
Return Nil
Armando wrote:Manuel:
Si no recuerdo mal, ahoro no estoy en mi pc para leer la doc, en el valor del NETSCAPEMENT puedes darle un valor positivo o negativo, si el valor es negativo el texto gira en el sentido de las manecillas del reloj, pero si es positivo gira en sentido contrario.
Entonces, se me ocurre que puedes probar con un valor positivo o bien un valor negativo más alto que haga girar más al texto hasta lograr el sentido que deseas.
Saludos
karinha wrote:Intente con SAYROTATED()
Manuel Valdenebro wrote:Como bien dice Karinha no es posible, porque la clase Treport impide escribir fuera de los margenes. Por ello, he modificado dicha clase y todo solucionado.
En el método SAY de Treport, en el DO CASE, he añadido un nuevo caso, con los datos siguientes:
do case
case nPad == 8
nStartCol := 75
En la aplicación en el ACTIVATE del report:
ACTIVATE REPORT oReport ;
ON ENDPAGE (oReport:NewLine(), ;
oReport:Say( 1, "texto que quiero poner en vertical", 4, 8, 5500 ))
4 = DEFINE FONT oFonV NAME "ARIAL" SIZE 0,-10 NESCAPEMENT -2700
8 = para que el Report tome este nPad
y todo solucionado como quería.
Gracias a Armando y Karinha por su ayuda.
Return to FiveWin para Harbour/xHarbour
Users browsing this forum: No registered users and 41 guests