Page 1 of 2

uan de wbrowse...

PostPosted: Mon Oct 17, 2005 2:14 am
by Francisco Horta
Hola Foro,

como puedo combinar imagen y texto en un header?
Gracias,
Paco :)

PostPosted: Mon Oct 17, 2005 4:47 pm
by Antonio Linares
Paco,

No está implementado como tal, pero si revisas source\classes\wbrowse.prg verás la función wBrwLine que es la encargada de dibujar cada línea del browse.

No sería muy complicado modificarla para que dibuje una imagen en una determinada columna de la cabecera.

Re: uan de wbrowse...

PostPosted: Mon Oct 17, 2005 6:13 pm
by Hernan Diego Ceccarelli
Francisco Horta wrote:Hola Foro,

como puedo combinar imagen y texto en un header?
Gracias,
Paco :)


Tal como dice Antonio, no seria muy dificil modificar codigo, aunque no es para todo el mundo :(. !!!

Respecto a la TW Version 18 (soon que la tengo en beta) puedes hacerlo desde un bloque de codigo nuevo, ejecutado desde C, para no retardar tanto el pintado de las cabeceras, y puedes ejecutar 2 cosas.
Code: Select all  Expand view
Los bloques se ejecutan por celda al momento de pintado. Dichas variables son ::bPrevPaint y ::bNextPaint. El primero se usa para
poder escribir en la celda en forma personalizada ANTES del pintado estandard de la celda,  y ::bNextPaint se ejecuta DESPUES del pintado normal. Esto le da FLEXIBILIDAD TOTAL a la clase.  Valores que puede devolver el bloque ::bPrevPaint;
      >---> <0> El pintado por defecto NO se hara, por lo tanto es su resposabilidad cubrir  el area total de la celda
      >---> <1> El pintado por defecto SI se hara EXCEPTO el Texto, por lo tanto es su resposabilidad pintar un texto especifico en la celda.
      >---> <Otro valor distino> Indicara que SI debe hacerse el pintado por defecto de la celda.
Los bloques reciben los siguientes parametros:

{|nRow,nCol,nStyle,hDC,cChar,nTop,nLeft,nBottom,nRight| <su codigo> }


Entre otras cosas, tendremos como novedades headers nativas sobre 32bit opcional, con correcta implementacion pudiendo en tiempo de ejecucion cambiar a viejas o nuevas, posibilidad de freezear el browse permitiendo que no se refresque ni se muevan punteros de ningun tipo en el pintado, algo asi como sacar una foto y dejarlo asi hasta que uno decida, mejoras de velocidad, doble buffer opcional y sin doble buffer tambien el browse no produce parpadeos practicamente, algunas nuevas implementaciones, posiblidad ejecutar manejo de keychar y keydown definidos por el usuario, etc,etc,etc. estas seran algunas de las cosas nuevas. Pronto en las bateas :D

Una MINI implementacion un beta tester:, como vemos usa los nuevos bloques y usa los bColor, alineaciones especiales y solo pinta caracteres en el cotextor de dispositivo. No usa imagenes pero podria haberlo hecho :D
Image

HDC - se ve ESPECTACULAR...

PostPosted: Mon Oct 17, 2005 7:49 pm
by RuFer
Hernán lo que se ve parece muy bueno.

Muchas gracias desde ya...

Saludos

Ruben Fernandez

Re: uan de wbrowse...

PostPosted: Mon Oct 17, 2005 11:09 pm
by Francisco Horta
UUUPPPPPSSS Hernan; Fabulosa !!! Grandiosa !!!
100% comentario aceptado, no todos tenemos la capacidad de mover fuentes !!, jejeje puede ser mi caso, pero voy a ver que saco.
Esperamos (de seguro todo el foro) ansiosos tu version 18
Suerte !!
Salu2
Paco

PostPosted: Tue Oct 18, 2005 6:25 am
by Yannis
Hernan, lo que describes es una maravilla ! :)
Las celdas personalizadas abren nuevos horizontes, y desde ya estoy pensando como disfrutar este nuevo browser.
Felicidades por este excelente trabajo !

Un saludo

PostPosted: Tue Oct 18, 2005 2:56 pm
by Hernan Diego Ceccarelli
Yannis wrote:Hernan, lo que describes es una maravilla ! :)
Las celdas personalizadas abren nuevos horizontes, y desde ya estoy pensando como disfrutar este nuevo browser.
Felicidades por este excelente trabajo !

Un saludo


Exacto, si bien las celdas personalizadas hacen a la flexibilidad, NO hay que abusar de los tiempos de pintado, entonces ahi juega un papel muy importante cuan optimizado sea ese codigo. Si la funcion esta hecha en lenguaje C seria todo mas rapido, en PRG tambien seria posible, pero bueno, dependera de cuan complicada sea. Las pruebas hechas sobre PRG han sido satisfactorias realmente y comviene mucho usar el doble buffer en estos casos, casi obligatoriamente.

Salu2

PostPosted: Tue Oct 18, 2005 4:25 pm
by Yannis
Hernan,
Entiendo lo que dices sobre la optimizacion del codigo. Es evidente que los .prg seran mucho mas lentos. Un trabajo mas para uno como yo que del lenguaje C no entiende un....
Pero, este browser ya es un paso gigante en adelante !!!.
Muchas gracias por tu tiempo !
Un saludo,

Re: una de wbrowse...

PostPosted: Wed Oct 19, 2005 3:40 am
by Francisco Horta
En efecto, no entiendo nada de .c asi que mejor ahi le dejo, no se me da, :cry:
Gracias a ambos Antonio y Hernan
Salu2
Paco

PostPosted: Mon Jul 30, 2007 9:22 pm
by Francisco Horta
Hernan,
Esta nueva version 18, esta super!!, algun dia se liberará o sera de paga?
si es asi, para cuando tendriamos noticias del precio y una liberacion?
salu2
paco

Re: uan de wbrowse...

PostPosted: Wed Aug 01, 2007 12:27 am
by R.F.
Francisco Horta wrote:Hola Foro,

como puedo combinar imagen y texto en un header?
Gracias,
Paco :)


Algo como esto ????:

Image

Esta hecho con el browse de Hernan.

PostPosted: Wed Aug 01, 2007 2:00 am
by jose_murugosa
Sinceramente desde que conocí el "Browse de Hernán" lo hice mi browse, por su simplicidad y rapidez.
Gracias Hernán por el tiempo que dedicas a esta herramienta y sobre todo por compartirla con la comunidad.
Tu trabajo es admirable.

PostPosted: Wed Aug 01, 2007 2:16 pm
by Francisco Horta
Efectivamente rene, tambien uso el browse de hernan, aqui mi duda viene en que yo no he podido mezclar, texto+imagen en las cabeceras, y en el sample que publica hdc utiliza los headers nativos, y en la version 17 no los tiene implementados.
Asi como jose yo tambien uso wbrowse desde que la use la primera vez, ya le he metido mano en algunos detalles y pues me he atrevido a subirla al foro sin consultar a hdc, esto para compartirlo con todos, gracias hdc por tu aporte.
salu2
Paco

Re: uan de wbrowse...

PostPosted: Wed Aug 01, 2007 2:33 pm
by Susy
RF wrote:
Francisco Horta wrote:Hola Foro,

como puedo combinar imagen y texto en un header?
Gracias,
Paco :)


Algo como esto ????:

Image

Esta hecho con el browse de Hernan.


Hola maestro Rene, como esta corazon pues, me llamo Susy y me interesa la clase de Hernan y el ejemplo que muestras con la imagen y celdas con sus totales, es de paga o podria aportar gratuito a los demas usuarios y si me podria enviar un claro ejemplo que muestras en la imagen, gracias y se lo agradecere eternamente maestro, besos y abrazos desde michoacan , su amiga Susy :)
susan_mx@hotmail.com

PostPosted: Wed Aug 01, 2007 8:20 pm
by R.F.
Ok, para todos ustedes, este es el secreto:

Como todo en FiveWin, son "efectos especiales", y en realidad, nada es lo que parece.

1) Necesitamos el Browse de Hernan, cualquier versión, (el truco funciona tambén con xBrowse) para mayor información sobre los browses de FW, les recomiendo que lean mi articulo "Browse VS Browse"

2) Es raro que el titulo de una cabecera cambie, asi que en realidad, lo que están viendo mis queridos amigos, es un bitmap que incluye el texto y la imagen, en realidad son 4 bitmap, 2 incluyen la imagen "habilitada" y 2 la imagen "deshabilitada":

Image


El color del fondo es lo de menos, recuerden que FW utiliza el byte 1,1 para definir el color de la transparencia

3) Antes de definir el browse, cargamos los bitmaps en la memoria:

Code: Select all  Expand view
hBmp1 := LoadBitmap(GETRESOURCES(),"HEADER1"))
hBmp2 := LoadBitmap(GETRESOURCES(),"HEADER2"))
hBmp3 := LoadBitmap(GETRESOURCES(),"HEADER3"))
hBmp4 := LoadBitmap(GETRESOURCES(),"HEADER4"))


4) Definimos el browse como se hace normalmente:

Code: Select all  Expand view
@ 0,205 LISTBOX oBrw FIELDS ....


5) Definimos sus headers:

Code: Select all  Expand view
oBrw:aHeaders := {" ",hBmp1,hBmp3,"Tipo","SubTipo","Naturaleza"}


6) y luego para cambiar dinamicamente los headers con su respectivo bitmap en tiempo de ejecucion:

Code: Select all  Expand view
oBrw:aActions :={{|| NIL},{|x| CamHeader(x,1)},{|x| CamHeader(x,2)}}


7) la función CamHeader(<oBrw>,<nOrden>):
Code: Select all  Expand view
FUNCTION CamHeader(oBrw,nIndex)
   IF nIndex == 1
      (oBrw:cAlias)->(OrdSetFocus('numcuenta'))
//aqui viene la magia, volvemos apintar el header completo, cambiando los bmps del header
      oBrw:aHeaders := {" ",hBmp1,hBmp3,'Tipo','SubTipo','Naturaleza'}
   ELSE
      (oBrw:cAlias)->(OrdSetFocus('nomcta'))
      oBrw:aHeaders := {" ",hBmp2,hBmp4,'Tipo','SubTipo','Naturaleza'}
   ENDIF
   oBrw:Refresh()
RETURN (.T.)



Y eso es todo.