14 de Septiembre 2005

Browses para T-Gtk

Bien, Joaquim a realizado un estupendo trabajo, peleandose con C , gObjects y los widgets en su parte más oscura para conseguir un magnifico trabajo.

El funcionamiento del browse es identico al de Fivewin, Harbour, Clipper, solamente se pinta lo que se ve, no es necesario recorrer TODA la base de datos , para pintar,
en contraposicion al Modelo/Vista/Controlador.

Hasta ahora, no me habia preocupado lo más mínimo el tema de los browses para
T-Gtk, porque usando las Listores, TreeView, etc.., lo teniamos solucionado, y con
toda la tecnologica que implica usar el Modelo / Vista / Controlador.

Pero, tambien puedo dar constancia, de la complejidad que eso supone, y más cuando al dia de hoy , no he realizado todavia las clases para gClass , para encapsular toda complejidad, y de momento , hay que batallar en base a funciones. Espero poder terminar cuanto antes este tema.

Pero , desde que me enseño Joaquim el trabajo que a realizado, me he quedado realmente ilusionado con ello, por que desde un principio, soporta colores, fonts, imagenes, etc..

Por mi parte estoy mejorando la clases y creando los comandos xBase, para
una mejor manera de crear los browses.

Voy a poner una simple imagen, para que podais ver el resultado final, y el codigo fuente que realiza este ejemplo.

browse.JPG

Codigo fuente:
#include "gclass.ch"
#include "browse.ch"

static Pixbuf1

function main()
Local oWnd, oBrw, oLabel , oBox, Image

pixbuf1 := gdk_pixbuf_new_from_file( "header.png" )

USE CUSTOMER NEW SHARED ALIAS "CUSTUM"

DEFINE WINDOW oWnd TITLE "Browse Native of T-Gtk" SIZE 600,300

DEFINE BOX oBox VERTICAL OF oWnd

DEFINE BROWSE oBrw ;
FIELDS Field->First, Field->Last ;
HEADERS "Primero","Ultimo" ;
ALIAS "CUSTUM" ;
COLSIZES 150,100 ;
OF oBox ;
FONT "Tahoma Italic 10" ;
ON CHANGE oLabel:SetText( "Registro actual:" + cValToChar( Recno() ) );
COLORS "black", {|| MyColorFon() }

ADD COLUMN TO BROWSE oBrw ;
DATA Field->Set ;
HEADER "SET" ;
COLORS "black", {|| MyColorFon() } ;
TYPE COL_TYPE_RADIO ;
SIZE 50

ADD COLUMN TO BROWSE oBrw ;
DATA Field->Street;
HEADER "Street" ;
HEADER_PICTURE "header.png" ;
COLOR "red","black" ;
SIZE 150

ADD COLUMN TO BROWSE oBrw ;
DATA CogePicture() ;
HEADER "Imagenes al vuelo" ;
TYPE COL_TYPE_BITMAP ;
COLORS "black", {|| MyColorFon() } ;

DEFINE LABEL oLabel PROMPT "Registro actual:" + cValToChar( Recno() ) OF oBox

oBrw:bKeyEvent := {|o,nkey| if( nKey == K_ENTER, MsgInfo( "HOLA" ), ) }

ACTIVATE WINDOW oWnd CENTER

// Desferenciamos pixbufs
gdk_pixbuf_unref( pixbuf1 )

return nil

STATIC FUNCTION MyColorFon()
Local cColor

if ( ( "CUSTUM" )->( OrdKeyNo() )%2 <> 0 )
cColor := "gray"
else
cColor := "yellow"
endif

Return cColor

/*
Simple, fácil y potente.
Hemos implementado en las columnas, la posibilidad de que el picture sea
un fichero, poniendo simplemente una cadena de texto, o , para ser mucho
más rápido y mas eficiente ahorrando memoria, es pasarle el puntero del pixbuf
que hemos cargado previamente.

¿ Puedes ver la diferencia ?
Mientras que la viendo 20 filas, cargamos 10 PICTURES IGUALES! en el caso del texo,
con el pixbuf, solamente ocupará en memoria UN PICTURE, independientemente de los
que veamos.

Es por ello, que he implementado esa caracteristica.

*/
STATIC FUNCTION COGEPICTURE()
Local cPicture

if ( ( "CUSTUM" )->( OrdKeyNo() )%2 <> 0 )
cPicture := pixbuf1 // Asigmos el puntero del pixbuf
else
cPicture := "browse.png" // Aqui , se cargará la imagen desde el DISCO!
endif

Return cPicture

Escrito por Rafa Carmona a las 14 de Septiembre 2005 a las 01:34 PM
Comentarios

Por lo que puedo deducir del código, el browse solo sirve para DBFs, en eso no se parece a TBrowse, que sirve para cualquier cosa, incluyendo obviamente a DBFs, pero sin limitarse a ellas.
Si se pudiera rectificar eso para usar un modelo basado en codeblocks como el TBrowse, o mejor aun, una clase que encapsule la presentacion de los datos, creo que se ganaría muchisimo. Este modelo a la fivewin implica que NO puedo hacer un cambio a una unica clase tbrowse, sino que habrá que hacerlo para cada clase tbriowse que escribas, y dejando fuera automáticamente a todas las demas fuentes de datos no consideradas por el autor.
Me explico lo que quiero decir?
Saludos

Escrito por Carlos Mora a las 20 de Septiembre 2005 a las 04:48 PM

¡¡¡Buenísimo!!! Repito los elogios que ya emití en el grupo. Ahora, viendo la imagen y lo sencillo del código fuente (todavía no pude bajarme el ejemplo en binario), confirmo que Joaquim ha hecho un gran trabajo, que se suma al gran trabajo que haces tú con la librería.

¡Felicitaciones Joaquim! :)

Escrito por Sebastián Lalaurette a las 20 de Septiembre 2005 a las 06:05 PM

¡¡¡Buenísimo!!! Repito los elogios que ya emití en el grupo. Ahora, viendo la imagen y lo sencillo del código fuente (todavía no pude bajarme el ejemplo en binario), confirmo que Joaquim ha hecho un gran trabajo, que se suma al gran trabajo que haces tú con la librería.

¡Felicitaciones Joaquim! :)

Escrito por Sebastián Lalaurette a las 20 de Septiembre 2005 a las 06:06 PM

Carlos, no se a que te refieres a que solamente sirve para DBF....

Por favor, explicate, porque no tengo ni idea de lo que dices.

Si no quieres DBF, pues tienes Listore/Treeview y compañia, sera por opciones ;-)

Y los movimientos y datas son TODOS codeblocks, asi si Eagle 1 o la TsBrowse es capaz de navegar por tablas MySQL, con T-Gtk 3 cuartos de lo mismo.

Escrito por Rafa Carmona a las 20 de Septiembre 2005 a las 08:45 PM

Miren lo que son las cosas, entré aquí para preguntar si de alguna manera puedo utilizar el T-Gtk con el HarbourMinigui y por alguna razón al estar avanzando pantallas, el cursor del ratón quedó posicionado en la liga:
"Cuando el pasado se asoma por la ventana...."
le dí click, y empecé a leer, es como lo que en muchas veces he soñado despierto.
En que de alguna forma, se dé el contacto con aquellas personas que dejaron huella en nuestro corazón y en nuestra mente y que por azares del destino ya no sabemos donde están; me vino a la mente una canción de Pablo Milanes (no se si sea el título real) "Cuanto Gané, Cuanto Perdí" en donde te lleva (bueno, al menos a mí) a recordar esos tiempos en los que quisieras volver a vivir.

"Donde estarán, los amigos de ayer
la novia fiel, que siempre dije amar
donde andaran, mi casa y su lugar
mi carro de jugar, mi calle de correr
donde andaran, la prima que me amó
el rincon que escondió, mis secretos de ayer... "

Creo que si la escuchan, tambien viajaran como yo a esos tiempos en que tuvimos tristezas y alegrias y que hoy nos llenan de nostalgia.

Lo siento, me puse sentiental...

Escrito por AndresGl a las 24 de Septiembre 2005 a las 05:52 AM

Me ayudo bastante este ejemplo, estoy buscando la forma en que en un BROWSE en FW me pinte todo el browse como pautado aunque el numero de registros de la base no alcanzen para llenar toda el area de despliegue. Si conocen algun modo ojala puedan ayudarme.

Escrito por Miguel Licona a las 21 de Diciembre 2005 a las 07:08 AM
Escribir un comentario









¿Recordar informacion personal?