FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Xbrowse técnicas de pintado avanzadas
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM
Xbrowse técnicas de pintado avanzadas
Posted: Thu Sep 29, 2011 09:51 AM
Esto es un xbrowse usando el poder que proporciona bPaintText :-)



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

xbrpaint.prg
Code (fw): Select all Collapse
// 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: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: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:KeyNo ], aCoors )
   // SelectObject( hDC, hOldFont )
   
return nil
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 401
Joined: Tue Jan 05, 2010 02:33 PM
Re: Xbrowse técnicas de pintado avanzadas
Posted: Fri Sep 30, 2011 09:54 AM

Antonio,
Nice.... If you need to be apologize, ok sorry. But think about me

FWH .. BC582.. xharbour
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Xbrowse técnicas de pintado avanzadas
Posted: Fri Sep 30, 2011 08: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
Posts: 14
Joined: Sat Sep 24, 2011 05:42 PM
Re: Xbrowse técnicas de pintado avanzadas
Posted: Sat Oct 01, 2011 01: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/
_____________________________________________

Continue the discussion