Page 1 of 1

Consulta Sobre uso de FONT en Xbrowse

Posted: Thu Oct 10, 2019 3:46 pm
by remtec
Hola Amigos.

Tengo una DBF que tiene 2 campos:
Tip_Lin = Tipo de Linea
Det_Lin = Detalle de la Linea

Lo que necesito es usar 2 tipos de Font por Filas en XBROWSE, un Font cuando Tip_Lin = "T" y otro para = "D"

Desde ya muchas gracias.

Muchos Saludos.
Antonio.

Re: Consulta Sobre uso de FONT en Xbrowse

Posted: Thu Oct 10, 2019 4:17 pm
by leandro
Una idea

Code: Select all

oBrw:oFont := { || If( oRsFtr:Eof, Space( nWidth ), tipoLetra( cValtoChar( oRsFtr:Fields( "ll_anulad" ):Value ) ) ) }  

....

************************
*CAMBIA EL TIPO DE LETRA
************************
Function tipoLetra(valor)
Define Font oFontT Name "Calibri" Size 0,-13 STRIKEOUT
Define Font oFontN Name "Calibri" Size 0,-13 
IF valor=="A"
    Return oFontT
ELSE
    Return oFontN
ENDIF

 

Re: Consulta Sobre uso de FONT en Xbrowse

Posted: Thu Oct 10, 2019 4:18 pm
by carlos vargas
textxbr6.prg te muestra como pintar individualmente una celda usando diferentes tipo de fuentes.

Code: Select all

#include 'fivewin.ch'
#include 'xbrowse.ch'

function main()

   local oDlg, oBrw
   local oFont, oBold, oItalic
   local aData    := {}

   DEFINE FONT oFont   NAME 'TAHOMA' SIZE 0,-12
   DEFINE FONT oBold   NAME 'TAHOMA' SIZE 0,-12 BOLD
   DEFINE FONT oItalic NAME 'TAHOMA' SIZE 0,-12 ITALIC

   AAdd( aData, { 1, 'Otto   ', ;
      'Mr.Otto' + CRLF + ;
      'deleveloped using multiple fonts in the same cell' } )
   AAdd( aData, { 2, 'Richard', ;
      "MR.OTTO'S" + CRLF + ;
      'work is well appreciated' } )
   AAdd( aData, { 3, 'Chidak ', ;
      'Mr.Richard Chidak' + CRLF + ;
      'also has  similar requirement. But needs to change the library' } )
   AAdd( aData, { 4, 'Antonio', ;
      'FWH' + CRLF + ;
      'Provides easier solution for owner drawing data without changing library code' } )


   DEFINE DIALOG oDlg SIZE 440,440 PIXEL FONT oFont

   @ 10, 10 XBROWSE oBrw ;
      HEADERS 'No', 'Name', 'Text' ;
      SIZE 200, 200 PIXEL ;
      OF oDlg ;
      ARRAY aData AUTOCOLS ;
      LINES

   oBrw:nStretchCol := STRETCHCOL_LAST

   WITH OBJECT oBrw:aCols[3]
      :nHeadStrAlign := AL_CENTER
      :nWidth        := 200
      :bPaintText    := { |oCol, hDC, cText, aCoord| DrawText( oCol, hDC, cText, aCoord, oBold, oItalic ) }
   END

   oBrw:nDataLines := 6
   oBrw:CreateFromCode()

   ACTIVATE DIALOG oDlg CENTERED

   RELEASE FONT oFont
   RELEASE FONT oBold
   RELEASE FONT oItalic

return nil

static function DrawText( oCol, hDC, cText, aCoord, oBold, oItalic )

   local nTop  := aCoord[ 1 ], nLeft := aCoord[ 2 ]
   local nBottom := aCoord[ 3 ], nRight := aCoord[ 4 ]
   local nRow  := nTop
   local cLine, nFontHt, nAt

   nAt      := AT( CRLF, cText )
   if nAt > 0
      cLine    := Left( cText, nAt - 1  )
      oBold:Activate( hDC )
      nFontHt  := GetTextHeight( oCol:oBrw:hWnd, hDC )
      DrawTextEx( hDC, cLine, { nRow, nLeft, nRow + nFontHt + 4, nRight }, 1 ) //oCol:nDataStyle )
      oBold:DeActivate( hDC )
      nRow     += nFontHt + 4
      cLine    := SubStr( cText, nAt + 2 )

   else
      cLine    := cText
   endif

   oItalic:Activate( hDC )
   DrawTextEx( hDC, cLine, { nRow, nLeft, nBottom, nRight }, oCol:nDataStyle )
   oItalic:DeActivate( hDC )


return nil
 

Re: Consulta Sobre uso de FONT en Xbrowse

Posted: Thu Oct 10, 2019 4:29 pm
by remtec
Hola Leandro y Carlos.

Muchas gracias por su ayuda, realmente se pasaron, ahora a implementar lo que necesito.

Muchos Saludos
Antonio.

Re: Consulta Sobre uso de FONT en Xbrowse

Posted: Thu Oct 10, 2019 6:24 pm
by FranciscoA
Aqui tienes otra idea:

Code: Select all

   
   REDEFINE XBROWSE oBrw ID 181 OF oDlg ;
   ---
   WITH OBJECT oBrw
   ---
   END

FOR N:=1 TO LEN(oBrw:aCols)
     oBrw:aCols[n]:oDataFont := {|| IF( (cAlias)->Tip_Lin = 'T', oFont1, oFont2) } 
   NEXT
 
Saludos.