FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour xBrowse Button del GET
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM

xBrowse Button del GET

Posted: Mon Sep 29, 2008 03:00 AM
recientemente me encontre con la necesidad de cambiar la imagen del boton del get en el xbrowse y me resulto un trabajo un poco complicado darme cuenta que tenia que primero generar el "DIALOG" o "WINDOW" para poder hacer el cambio de la imagen, que inicialmente es un boton muy pequeño con tres puntos "..."


De esta forma hacia el cambio de imagen pero lo que me pasaba era que tenia el mismo ancho de la imagen al boton de tres puntos
activate dialog aWnd[ 2 ] nowait ;
on init ( aWnd[ 2 ]:move( 0,0 ) , ;
oBrw:aCols[ 3 ]:="",;
oBrw:aCols[ 3 ]:LoadBitMaps("busca") ) ;
VALID ( !GETKEYSTATE( VK_ESCAPE ) )


encontre pocas personas que tenian ese problema pero no se si lograron una solucion asi que me puse a trabajar y modificar la clase xbrowse a mi necesidad y esto fue lo que hice al final.
no se si sea la forma correcta pero me dio los resultados que quiero... hasta los momentos

1ro. cree una nueva DATA para las COLUMNS
DATA nBtnBmp AS NUMERIC INIT 0
con esta voy a indicar en que posicion de la matriz de oBrw:aBitmaps esta la imagen que quiero mostrar... para cargar la imagen a oBrw:aBitmaps se pueden usar los METODOS
METHOD AddResource( cRes ) // Adds a new bitmap to the ::aBitmaps array giving his resource name
METHOD AddBmpFile( cFile ) // Adds a new bitmap to the ::aBitmaps array giving his file name
METHOD AddBmpHandle( hBmp ) // Adds a new bitmap to the ::aBitmaps array giving his bitmap handle

2do. el problema era el tamaño, aqui hay varias cosas, cree una nueva variable local en el metodo METHOD PaintData
local nBtnWidth := 0, esta variable contiene el ancho de la imagen contenida en ::aBitmaps
agrege y cambie una lineas en el mismo metodo

if nType > 1
if ::nBtnBmp > 0 .and. len( ::aBitmaps ) >= ::nBtnBmp
nBtnWidth := ::aBitMaps[ ::nBtnBmp, BITMAP_WIDTH ]
else
nBtnWidth := 10
endif


nButtonRow := nRow
nButtonCol := nCol + nWidth - nBtnWidth
nWidth -= ( nBtnWidth + 5 )
.
.
.
.


if nType > 1
if lSelected
WndBoxRaised(hDC, nButtonRow -1 , nButtonCol - 1,;
nButtonRow + nHeight, nButtonCol + nBtnWidth + 1 )

if nType == EDIT_LISTBOX .or. nType == EDIT_GET_LISTBOX
::Hide()
::Move( nButtonRow, nButtonCol, nBtnWidth + 1, nHeight, .f.)
::Show()
::GetDC()
FillRect( hDC, {nButtonRow, nButtonCol, nButtonRow + nHeight , nButtonCol + nBtnWidth + 1 },;
::hBrush )
::Paint()
::ReleaseDC()
else
::Hide()
::Move( nButtonRow, nButtonCol, nBtnWidth + 1, nHeight, .f.)
::Show()
::GetDC()
FillRect( hDC, {nButtonRow, nButtonCol, nButtonRow + nHeight , nButtonCol + nBtnWidth + 1 },;
::hBrush )
::Paint()
::ReleaseDC()
endif
endif

3ro. en el metodo.
METHOD CreateButtons() agrege una lineas mas después de la creacion de botones
if ::nBtnBmp > 0 .and. !empty( ::aBitMaps )
if ::nBtnBmp > len( ::aBitMaps )
::nBtnBmp := len( ::aBitMaps )
endif
::ChangeBitMap( )
endif

::Hide()
::Hide()

4to. cree un nuevo metodo

METHOD ChangeBitmap( ) CLASS TXBrwColumn

if ::nBtnBmp > 0 .and. len( ::aBitmaps ) >= ::nBtnBmp
::hBitmap1 := ::aBitMaps[::nBtnBmp, BITMAP_HANDLE ]
::hBitmap1 := ::aBitMaps[::nBtnBmp, BITMAP_HANDLE ]
::cCaption := ""
else
::hBitmap1 := 0
::hBitmap1 := 0
::cCaption := "..."
endif

::refresh()

return nil


y ahora puedo cambiar las imagenes de los botones dinamicamente
//********

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

function Test()

local oDlg, oBrw
local aArray := {}
local aList := {"1","2","3","4"}
local nI

for nI = 1 to 20
aadd( aArray, { "Fila:"+StrZero(nI,2)+" Col:01",;
"Fila:"+StrZero(nI,2)+" Col:02",;
"Fila:"+StrZero(nI,2)+" Col:03",;
"Fila:"+StrZero(nI,2)+" Col:04",;
"Fila:"+StrZero(nI,2)+" Col:05",;
"Fila:"+StrZero(nI,2)+" Col:06" } )
next

DEFINE DIALOG oDlg Title "Test de Botones en xBrowse " size 700,300

oBrw:= txbrowse():new( oDlg )
oBrw:nRowHeight := 25
oBrw:nColDividerStyle := LINESTYLE_BLACK
oBrw:nRowDividerStyle := LINESTYLE_BLACK
oBrw:SetArray( aArray )
oBrw:CreateFromCode()

oBrw:aCols[ 2 ]:AddBmpFile("C:\FWH\BITMAPS\16x16\closeall.bmp")
oBrw:aCols[ 2 ]:AddResource("find")
oBrw:aCols[ 2 ]:AddResource("cancel")
oBrw:aCols[ 2 ]:AddResource("exit")
oBrw:aCols[ 2 ]:nEditType( EDIT_GET_BUTTON )
oBrw:aCols[ 2 ]:nBtnBmp := 1
oBrw:aCols[ 2 ]:bEditBlock := {|| msginfo( "Imagen"+strzero( oBrw:aCols[ 2 ]:nBtnBmp, 2 ) ) }


oBrw:aCols[ 3 ]:nEditType( EDIT_GET_LISTBOX )
oBrw:aCols[ 3 ]:aEditListTxt := aList
oBrw:aCols[ 3 ]:bOnPostEdit := {|o,x,k| oBrw:aCols[ 2 ]:nBtnBmp := x , ;
oBrw:aCols[ 2 ]:ChangeBitMap() }

ACTIVATE DIALOG oDlg center;
ON INIT ( oDlg:oClient := oBrw, ;
oDlg:ReSize() )

return nil

PRUEBA 1


PRUEBA 2


PRUEBA 3


igualmente se puede cambiar la flecha del los LISTBOX usando la misma forma.

si existe una forma mas facil por favor quiero saberla, igual esto me ayudo a entender un poco mas la xbrowse e igual espero que a alguien le sirva
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

xBrowse Button del GET

Posted: Mon Sep 29, 2008 08:16 AM

Daniel,

Muchas gracias por esta aportación tan interesante! :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM

xBrowse Button del GET

Posted: Mon Sep 29, 2008 06:21 PM
Antonio Linares wrote:Daniel,

Muchas gracias por esta aportación tan interesante! :-)


antonio gracias a ti por el interes... realmente no se si era la mejor forma de resolverlo, o si utilice de forma debida las variables y metodos de la clase, o si existe otra forma de hacerlo, o si crea un presendente para un aporte sustantivo, el proposito inical fue quitarme la piedra del zapato y aprender un poco mas de la clase.
Yo solo espero que este pequeño cambio no solo me sirva a mi sino a otras personas
Posts: 1283
Joined: Fri Feb 10, 2006 02:34 PM

xBrowse Button del GET

Posted: Wed Oct 01, 2008 06:31 AM

Daniel,

Me gusta :lol:

Gracies.

Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
HIX -> https://github.com/carles9000/hix
Posts: 880
Joined: Fri Jan 12, 2007 08:35 PM

Que bien

Posted: Sun Oct 19, 2008 04:09 AM

Que bien eso lo queria hacer y no encontraba como :(

gracias por el dato :D

Saluditos

Aida :wink:

Que es mejor que programar? creo que nada :)
Atropellada pero aqui ando :P

I love Fivewin

séʌǝɹ ןɐ ɐʇsǝ opunɯ ǝʇsǝ
Posts: 3107
Joined: Fri Oct 07, 2005 06:28 PM

xBrowse Button del GET

Posted: Mon Dec 01, 2008 09:42 AM

can I have the class with these modifies at mio correo?

gracias

Best Regards, Saludos



Falconi Silvio
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM

xBrowse Button del GET

Posted: Mon Dec 01, 2008 01:06 PM

check you email... :D

Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM

xBrowse Button del GET

Posted: Mon Dec 01, 2008 02:06 PM
Mcfox:
Puedes enviarme la classe modificada a mi corre f.alegria.p@Gmail.com?
Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM

xBrowse Button del GET

Posted: Mon Dec 01, 2008 03:18 PM
FranciscoA wrote:Mcfox:
Puedes enviarme la classe modificada a mi corre f.alegria.p@Gmail.com?

Estoy usando la clase de MCFOX, imagino le ha hecho algunos nuevos cambios, te envie hasta donde estoy actualizado, incluyendo estos que publica.espero te sirva...saludos... :-)
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

xBrowse Button del GET

Posted: Mon Dec 01, 2008 03:19 PM

Joe Luis, Francisco,

Le hemos enviado la version mas reciente de xbrowse a Daniel para que la modifique y la pruebe y asi usemos todos la version mas reciente :-)

regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 2170
Joined: Fri Jul 18, 2008 01:24 AM

xBrowse Button del GET

Posted: Mon Dec 01, 2008 10:10 PM

José Luis, Antonio... Gracias.

Francisco J. Alegría P.

Chinandega, Nicaragua.



Fwxh-MySql-TMySql
Posts: 2064
Joined: Fri Jan 06, 2006 09:28 PM

xBrowse Button del GET

Posted: Tue Dec 02, 2008 02:32 AM
Antonio Linares wrote:Joe Luis, Francisco,

Le hemos enviado la version mas reciente de xbrowse a Daniel para que la modifique y la pruebe y asi usemos todos la version mas reciente :-)

Buena idea Antonio, de verdad que MCFOX ha hecho unos buenos cambios que todos podremos sacarle el mejor provecho a este poderoso xBrowse...saludos...
Dios no está muerto...



Gracias a mi Dios ante todo!
Posts: 2365
Joined: Wed Nov 02, 2005 11:46 PM

xBrowse Button del GET

Posted: Tue Dec 02, 2008 02:43 PM

Listo antonio verifica el correo

Continue the discussion