Page 1 of 1

Header con bitmap en TWBorwse

PostPosted: Fri Dec 26, 2008 10:44 am
by rolando
Buen día,

Tengo la necesidad de colocar un bitmap, que cambie en tiempo de ejecución, en el header de un listbox con la TWBrowse 1.7 de HC.

Leí un tópico en este foro (de RF) en el que explica como hacerlo pero no pude lograrlo.

Luego ví también la clase 17a de Rossine y no pude compilar los ejemplos.

¿Hay algún modo de hacerlo?

Gracias.

Rolando :D

FWH 2.7 + xHArbour + Pelles-C

PostPosted: Fri Dec 26, 2008 3:46 pm
by Francisco Horta
Rolando prueba asi:
aBmp := LoadBitmap(GetResources(),"PRINTER")

@ 0,0 LISTBOX oBrw ;
FIELDS ;
HEADER "", "FECHA", aBmp, "Folio", "", "Departamento", "Recibio" ;
SIZES 22, 80, 32, 80, 22, 300, 300

y para cambiarlo prueba haciendo:

aBmp := LoadBitmap(GetResources(),"PRINTER2")
oBrw:aHeaders := {}
oBrw:aHeaders := { "", "FECHA", aBmp[5], "Folio", "", "Departamento", "Recibio" }
oBrw:Refresh()

salu2
Paco

PostPosted: Fri Dec 26, 2008 4:47 pm
by rolando
Francisco,

Gracias por responder.

Lo estuve intentando como tu indicas pero no me funciona. Copio parte de mi código:

Code: Select all  Expand view
    hBmp1 := LoadBitmap(GETRESOURCES(),"PRINTER")

    define dialog oDlg resource "LISTARREGISTROS" of oWnd

    oDlg:bGotFocus:={||dbSelectArea(cTrabajos)}

    redefine listbox oLbx ;                //
                  FIELDS " " , str((cTrabajos)->TALON),(cTrabajos)->NOMBRE,(cTrabajos)->DIRECCION,(cTrabajos)->LOCALIDAD ,(cTrabajos)->BARRIO , ;
                      (cTrabajos)->CODPOSTAL,(cTrabajos)->TELEFONO1,(cTrabajos)->TELEFONO2,(cTrabajos)->CELULAR , ;
                      (cTrabajos)->EMAIL,(cTrabajos)->MARCA,(cTrabajos)->MODELO,(cTrabajos)->SERIE,(cTrabajos)->UBICADO ;   //  (cTrabajos)->RECNO()
                  ALIAS(cTrabajos);
                  id 4001 ;                                                       //
                  of oDlg

    oLbx:aHeaders := { hBmp1,"TALON" ,"NOMBRE" , "DIRECCION" , "LOCALIDAD" , "BARRIO" , ;
                  "CODIGO"+CHR(13)+"POSTAL" , "TELEFONO 1" , "TELEFONO 2" , "CELULAR" , "EMAIL" , "MARCA" , "MODELO" , "SERIE" , "UBICACIÓN"}

       oLbx:bGotFocus:={||dbSelectArea(cTrabajos)}   
       oLbx:oFont:=oFnt
       oLbx:aHJustify := { 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 , 2 }
       oLbx:oCursor:=oCur1
       oLbx:nFreeze:=2               
       oLbx:nClrPane:= nRGB(230,230,250)
       oLbx:nHeaderHeight:= 30               
       oLbx:bLdblclick:= {||EditoTrabajos(str(recno())) , oLbx:refresh()}

    activate dialog oDlg ..... etc


Lo hago desde recursos. ¿Será que la TWBrowse que tengo está mal?.

Serías tan amable de enviarme la clase TWBrowse de HC a mi correo?.

Gracias.

Rolando :D

PostPosted: Fri Dec 26, 2008 7:02 pm
by Francisco Horta
Que raro que no te funcione, a mi me va bien, carga otro bitmap y mira prueba a poner en tu programa en esta parte asi:

hBmp1 := LoadBitmap(GETRESOURCES(),"PRINTER")
hBmp2 := LoadBitmap(GETRESOURCES(),"NUEVOBITMAP")
oLbx:bLdblclick:= {||EditoTrabajos(str(recno())) , cambiaimg(@oLbx,hBmp2),oLbx:refresh()}

func cambiaimg(oLbx,hBmp2)
oLbx:aHeaders:={}
oLbx:aHeaders := { hBmp2,"TALON" ,"NOMBRE" , "DIRECCION" , "LOCALIDAD" , "BARRIO" , ;
"CODIGO"+CHR(13)+"POSTAL" , "TELEFONO 1" , "TELEFONO 2" , "CELULAR" , "EMAIL" , "MARCA" , "MODELO" , "SERIE" , "UBICACIÓN"}
return nil

salu2
paco

PostPosted: Fri Dec 26, 2008 11:46 pm
by rolando
Francisco,

¿Usas la TWbrowse 1.7 de HC?.

Me sigue dando error en ejecución:

Application
===========
Path and name: D:\VERCE\BIN\xHsounds.Exe (32 bits)
Size: 653,312 bytes
Time from start: 0 hours 0 mins 3 secs
Error occurred at: 26/12/2008, 21:43:06
Error description: Error BASE/1111 Error de argumento: LEN
Args:
[ 1] = N 1610947349

Stack Calls
===========
Called from: => LEN(0)
Called from: WBROWSE.PRG => TWBROWSE:DEFAULT(1846)


No podrías enviarme el TWBrowse que usas para poder probar con él. Gracias. :D

Rolando
rcerella@gmail.com

PostPosted: Sat Dec 27, 2008 12:58 am
by rolando
Francisco,

Ya lo solucioné. Creo que el problema se daba porque los tres dialogs que se abren en esta parte del programa, son NOWAIT.

Lo que hice fué llamar la función (como la que enviaste) en el ON INIT y así sí tomó el bitmap. luego lo cambio dentro de la función que llamo cuando se pulsa sobre ese header.

Gracias por contestar.

Rolando :D