Xbrowse técnicas de pintado avanzadas

Xbrowse técnicas de pintado avanzadas

Postby Antonio Linares » Thu Sep 29, 2011 9:51 am

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  Expand view
// 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
Antonio Linares
Site Admin
 
Posts: 41366
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Xbrowse técnicas de pintado avanzadas

Postby MdaSolution » Fri Sep 30, 2011 9:54 am

Antonio,
Nice.... If you need to be apologize, ok sorry. But think about me
FWH .. BC582.. xharbour
User avatar
MdaSolution
 
Posts: 401
Joined: Tue Jan 05, 2010 2:33 pm

Re: Xbrowse técnicas de pintado avanzadas

Postby El Loco » Fri Sep 30, 2011 8:36 pm

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
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
El Loco
 
Posts: 328
Joined: Fri May 19, 2006 4:08 pm
Location: Buenos Aires - Argentina

Re: Xbrowse técnicas de pintado avanzadas

Postby GuillermoMtz » Sat Oct 01, 2011 1:08 am

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/
_____________________________________________
User avatar
GuillermoMtz
 
Posts: 14
Joined: Sat Sep 24, 2011 5:42 pm
Location: Chihuahua, Chihuahua, Mexico


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 20 guests