Xbrowse técnicas de pintado avanzadas

Post Reply
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Xbrowse técnicas de pintado avanzadas

Post by Antonio Linares »

Esto es un xbrowse usando el poder que proporciona bPaintText :-)

Image

Aún hay que ajustar las esquinas de los botones, pero la apariencia es muy buena :-)

xbrpaint.prg

Code: Select all

// xbrowse advanced painting examples

#include "FiveWin.ch"
#include "xbrowse.ch"

#define CLR_BACK nRGB( 130, 201, 249 ) 

function Main()

   local oWnd, oFont, oBrw, aItems := { { "One", "Two" }, { "Three", "Four" }, { "Five", "Six" } }
   local hBmp := ReadBitmap( 0, "..\bitmaps\contact.bmp" )

   DEFINE FONT oFont NAME "Segoe UI Light" SIZE 0, -16 

   DEFINE WINDOW oWnd COLOR "BG/B" STYLE nOr( WS_POPUP, WS_VISIBLE )

   @ 9, 37 XBROWSE oBrw ARRAY aItems ;
      SIZE 800, 500 NOBORDER OF oWnd FONT oFont

   oBrw:nDataLines = 4   
   oBrw:lRecordSelector = .F.
   oBrw:lHeader   = .F.
   oBrw:lHScroll  = .F. 
   oBrw:lVScroll  = .F. 
   oBrw:nMarqueeStyle = MARQSTYLE_HIGHLCELL // MARQSTYLE_NOMARQUEE
   oBrw:bClrStd = { || { 0, CLR_BACK } }  
   oBrw:bClrSelFocus = { || { CLR_WHITE, CLR_BACK } } 
   oBrw:SetColor( 0, CLR_BACK )     
   
   oBrw:CreateFromCode() 
   oBrw:SetFocus()  

   oBrw:aCols[ 1 ]:nWidth = 400
   oBrw:aCols[ 2 ]:nWidth = 400
   oBrw:aCols[ 1 ]:bPaintText = { | oCol, hDC, cText, aCoors, aColors, lHighlight | DrawRow( oCol, hDC, cText, aCoors, oFont, lHighlight, hBmp )  }
   oBrw:aCols[ 2 ]:bPaintText = { | oCol, hDC, cText, aCoors, aColors, lHighlight | DrawRow( oCol, hDC, cText, aCoors, oFont, lHighlight, hBmp )  }
      
   ACTIVATE WINDOW oWnd MAXIMIZED ;
      ON CLICK oWnd:End()

return nil

function DrawRow( oCol, hDC, cText, aCoors, oFont, lHighlight, hBmp )

   local hOldFont, nOldMode := SetBkMode( hDC, 0 )
   // local hRgn := CreateRoundRectRgn( { aCoors[ 1 ] +  10, aCoors[ 2 ] + 10, aCoors[ 3 ] - 10, aCoors[ 4 ] - 10 }, 10, 10 )

   // SetWindowRgn( oCol:oBrw:hWnd, hRgn, .F. )

   if lHighlight
      GradientFill( hDC, aCoors[ 1 ] +  10, aCoors[ 2 ] + 10, aCoors[ 3 ] - 10, aCoors[ 4 ] - 10, { ;
           { 2/5, nRGB( 253, 212, 168 ), nRGB( 251, 178, 99 ) },;
         { 3/5, nRGB( 250, 157, 52 ), nRGB( 252, 234, 163 ) } } )
      RoundBox( hDC, aCoors[ 2 ] +  10, aCoors[ 1 ] + 10, aCoors[ 4 ] - 10, aCoors[ 3 ] - 10, 20, 20, CLR_BLUE )
   else
      GradientFill( hDC, aCoors[ 1 ] +  10, aCoors[ 2 ] + 10, aCoors[ 3 ] - 10, aCoors[ 4 ] - 10, { ;
           { 2/5, nRGB( 223, 236, 255 ), nRGB( 197, 222, 255 ) },;
         { 3/5, nRGB( 173, 209, 255 ), nRGB( 189, 217, 255 ) } } )
      RoundBox( hDC, aCoors[ 2 ] +  10, aCoors[ 1 ] + 10, aCoors[ 4 ] - 10, aCoors[ 3 ] - 10, 20, 20, CLR_BLUE )
   endif

   // DeleteObject( hRgn )
   // SetWindowRgn( oCol:oBrw:hWnd, nil, .F. )
   
   DrawBitmap( hDC, hBmp, aCoors[ 1 ] +  18, aCoors[ 2 ] + 23 )
   
   aCoors[ 1 ] += 30
   aCoors[ 2 ] += 80
   DrawText( hDC, cText, aCoors )
   hOldFont = SelectObject( hDC, oFont:hFont )
   SetBkMode( hDC, nOldMode )

   // DrawText( hDC, aItems[ oCol:oBrw:KeyNo ], aCoors )
   // SelectObject( hDC, hOldFont )
   
return nil  
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
MdaSolution
Posts: 401
Joined: Tue Jan 05, 2010 2:33 pm

Re: Xbrowse técnicas de pintado avanzadas

Post by MdaSolution »

Antonio,
Nice.... If you need to be apologize, ok sorry. But think about me
FWH .. BC582.. xharbour
El Loco
Posts: 220
Joined: Fri May 19, 2006 4:08 pm

Re: Xbrowse técnicas de pintado avanzadas

Post by El Loco »

Excelente Troesma !!!
Es como digo, xBrowse esta tomando características tales que lo convierten un lenguaje dentro de otro.
Las cosas que pueden hacerse con el con maravillosas.
Imaginen el mismo ejemplo que muestra Antonio, alineados verticalmente, tenemos un menú, con click derecho otro xbrowse/submenu ... así mil cosas más.
Estoy tratando, todavía no me sale, de darle un formato plano, flat, que me permitiría convertirlo un "tips" .
Quizás no soy claro, pero cuando lo deje operativo, mando un ejemplo, y si Antonio le interesa que lo agregue.

Un abrazo. El Loco
User avatar
GuillermoMtz
Posts: 14
Joined: Sat Sep 24, 2011 5:42 pm
Location: Chihuahua, Chihuahua, Mexico
Contact:

Re: Xbrowse técnicas de pintado avanzadas

Post by GuillermoMtz »

Wow! :o , Excelente Antonio.
Realmente me va ser muy Util, Saludos.

El loco, si concluyes con eso seria magnifico, estoy muy interesado en lo
que propones le daria buena vista a los sistemas. Saludos y Exito!
:D
_____________________________________________

NxTSolutions
Soluciones Integrales en Informatica
Sitio Web http://www.nxtsolutions.com.mx/
_____________________________________________
Post Reply