19 de Septiembre 2005

Browses para T-Gtk (II)

Si anteriormente vimos el ejemplo de uso de un Browse sobre una tabla DBF,
ahora veremos sobre arrays.

Siguiendo con el Browse nativo, Joaquim a dado soporte tambien para arrays,
igual que anteriormente haciamos en Fivewin con oBrw:SetArray( aArray ),
con T-Gtk se realizará de la misma forma.

La diferencia, es que mientras en Fivewin tenemos que poner FIELD ""; ,
bajo T-Gtk no es necesario:

aElements := { { 1,2,3,4,5,6,7,8,9,10,11,12 } }

DEFINE BROWSE oBrw1 ;
HEADERS "Elementos" ;
COLSIZES 50;
OF oBox

oBrw1:SetArray( aElements )

Ademas, se a introducido una data a la columna, para especificar si debe
mostrar o no la barra como seleccionado, cuando estemos encima de la fila
actual.

oBrw:aColumns[1]:lDrawSelect := .f.

Seria el equivalente a NOBAR de la clase TSBROWSE.

Pongo aqui la imagen sobre dos browses relacionados, todo basado en arrays.

brwarray.JPG

Finalmente , esto va tomando forma, y de momento nos estamos centrando en
depurar la clase , tanto a nivel de C como de prg.

Despues , me queda finalizar la implementación directamente en gClass , que
tengo al 99%, a falta de parar las caracteristicas actuales , en esta primera
revision.

Pero ya sabemos como funciona esto, no se termina nunca de contentar a nadie, y no se para nunca de intentar mejorar lo que se tiene.

Como siempre, aqui esta el codigo fuente que realiza lo de la imagen:


/**
* BrwArray.prg - Browse arrays & gclass (by TheFull)
* Copyright (C) 2005 Joaquim Ferrer Godoy
**/

#include "gclass.ch"
#include "browse.ch"

function main()

local oWnd, oBrw1, oBrw2, oBox
local aColSpa := { "rojo", " blanco", "amarillo", "verde", "marron", "rosa", ;
"negro", "naranja", "gris", "lila", "azul", "fucsia" }
local aColCat := { "roig", "blanc", "groc", "vert", "marro", "rosa", ;
"negre", "taronge", "gris", "lila", "blau", "fucsia" }
local aColEng := { "red", "white", "yellow", "green", "brown", "pink", ;
"black", "orange", "gray", "purple", "blue", "#FF00FF" }
local aNumber := { { 1,2,3,4,5,6,7,8,9,10,11,12 } }

local aNumSpa := { "Uno", "Dos", "Tres", "Cuatro", "Cinco", "Seis",;
"Siete", "Ocho", "Nueve", "Diez", "Once", "Doce" }
local aNumCat := { "U", "Dos", "Tres", "Quatre", "Cinc", "Sis", ;
"Set", "Vuit", "Nou", "Deu", "Onze", "Dotze" }
local aNumEng := { "One", "Two", "Three", "Four", "Five", "Six", ;
"Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve" }
local aDays := { 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }


DEFINE WINDOW oWnd TITLE "Browse arrays T-Gtk" SIZE 500,300

DEFINE BOX oBox SPACING 2 OF oWnd

DEFINE BROWSE oBrw1 ;
HEADERS "Number" ;
COLSIZES 50;
OF oBox ;
COLORS "red" ;
ON CHANGE ( oBrw2:SetArray( { { aNumSpa[oBrw1:nAt], aColSpa[oBrw1:nAt] }, ;
{ aNumCat[oBrw1:nAt], aColCat[oBrw1:nAt] }, ;
{ aNumEng[oBrw1:nAt], aColEng[oBrw1:nAt] } } ),;
oBrw2:Refresh() )

ADD COLUMN TO BROWSE oBrw1 ;
DATA "";
HEADER "Colors" ;
COLOR "red", {|| aColEng[ oBrw1:nAt ] } ;
SIZE 70

atail( oBrw1:aColumns ):lDrawSelect := .f.

ADD COLUMN TO BROWSE oBrw1 ;
DATA {|| aDays[oBrw1:nAt] };
HEADER "Months/Days" ;
HEADER_PICTURE "browse.png" ;
COLOR {|| if( oBrw1:nAt %2 <> 0, "red", "green" ) }, ;
{|| if( oBrw1:nAt %2 <> 0, "gray", "white" ) } ;
SIZE 80

oBrw1:SetArray( aNumber )

DEFINE BROWSE oBrw2 ;
HEADERS "Spanish", "Catalan", "English" ;
COLSIZES 70,70,70 ;
OF oBox ;
COLORS "black"

oBrw2:lArrow := .f.
oBrw2:aColumns[ 2 ]:cfgColor = "#FFD700"
oBrw2:aColumns[ 2 ]:cbgColor = "#1E90FF"

ACTIVATE WINDOW oWnd CENTER

return nil

Escrito por Rafa Carmona a las 19 de Septiembre 2005 a las 11:43 PM
Comentarios

Vamos haber si hemos puesto bien el tema de los comentarios para la gente.

Escrito por Rafa Carmona a las 19 de Septiembre 2005 a las 11:45 PM

Great, T-GTK POWER!!!, look very easy to implement.

Saludos,

-iip-

Escrito por Iip a las 20 de Septiembre 2005 a las 06:36 AM

Sera utilizable con algo que no sea dbf o array ??

Excelente trabajo.

Atte,
Lautaro

Escrito por Lautaro Moreira a las 20 de Septiembre 2005 a las 05:04 PM

Umm. Lautaro, a que te refieres exactamente ?
Es posible modificar los codeblocks, bSkip, bGotop, bGoBottom, bLogicLen, por lo cual, el comportamiento
lo puedes decidir tu.

Dime en que estas interesado para ponerlo, si podemos hacerlo o preveerlo en un futuro.

En nuestra idea, estaba al principio SOLAMENTE la navegacion a traves de DBFs, porque, tenemos los listores/TreeView para el resto.

Saludos

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

Ups, no mire toda la sintaxis, es que estoy demasiado acostumbrado a usar el bline del browse de fivewin para mostrar los data y no lo veia en ninguna parte, pero tu sintaxis es columna a columna.

Gracias por tu atencion.

Lautaro

Escrito por Lautaro Moreria a las 21 de Septiembre 2005 a las 07:01 PM
Escribir un comentario









¿Recordar informacion personal?