Implementacion de Tree Store en POO.
Si bien, habia implementado en T-Gtk el tema de los Listore, este fin de semana
he sacado tiempo para terminar el tema de los Tree Store.
He realizado una mejora con respecto a los listore, que tengo que tocarlos para que
soporten la manera de hacer en ambos modelo de datos, y es que si una columna,
el padre , OF, no es un TreeView , lo tratará como otra columna, de esta manera,
podemos formar varias columnas, como una sola columna.
La verdad, es que el Modelo/Vista/Controlador, nos da un maravillo mundo de posibilidades.
Como muestra, una imagen:
Como siempre, aqui esta el codigo fuente:
/* Ejemplo de TreeStore */#include "gclass.ch"
#define GtkTreeIter Array( 4 )
Function Main()
local hWnd, oScroll, oTreeView, oWnd, oLbx, oBox, oCol, oCol2, oCol4
DEFINE WINDOW oWnd TITLE "T-Gtk TreeStore power!!" SIZE 600,400
DEFINE BOX oBox VERTICAL SPACING 8 OF oWnd
DEFINE LABEL PROMPT "Planning Calendar" OF oBox
DEFINE SCROLLEDWINDOW oScroll OF oBox EXPAND FILL
oScroll:SetShadow( GTK_SHADOW_ETCHED_IN )
oScroll:SetPolicy( GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC)
/*Modelo de Datos */
oLbx := Create_Model()
DEFINE TREEVIEW oTreeView MODEL oLbx OF oScroll CONTAINER
oTreeView:SetRules( .T. )
DEFINE TREEVIEWCOLUMN oCol COLUMN 1 TITLE "Holiday" TYPE "text" OF oTreeView
oCol:SetResizable( .T. )
// Esta columna, formará parte de "Holiday"
DEFINE TREEVIEWCOLUMN COLUMN 4 TYPE "progress" OF oColDEFINE TREEVIEWCOLUMN oCol COLUMN 2 TITLE "Check + FIESTA!!" TYPE "active" OF oTreeView
oCol:Set_Valist( oCol:pRenderer ,{ "cell-background", "Yellow", ;
"cell-background-set", .t. } )
// Fijaos, como podemos FORMAR en una misma columna , un grafico , por ejemplo.
// Ademas, alineamos el pixbuf a la derecha, xAlign, y mantememos el mismo color de fondo
DEFINE TREEVIEWCOLUMN oCol2 COLUMN 3 TYPE "pixbuf" OF oCol EXPAND
oCol2:Set_Valist( oCol2:pRenderer ,{ "cell-background", "Yellow", ;
"cell-background-set", .t.,;
"xalign", 0.0 } )oTreeView:SetFocus()
ACTIVATE WINDOW oWnd CENTER
RETURN NILSTATIC FUNCTION Create_Model()
local oLbx
local aParent, aChild , aIter
local nMonth, nDay, pixbuf
local nToday := 0
local aDays := { "Lunes", "Martes", "Miercoles", "Jueves", ;
"Viernes", "Sabado", "Domingo" }
local aMonths := { "Ene", "Feb", "Mar", "Abr", "May", "Jun", ;
"Jul", "Ago", "Sep", "Oct", "Nov", "Dic" }DEFINE TREE_STORE oLbx TYPES G_TYPE_STRING, G_TYPE_BOOLEAN, GDK_TYPE_PIXBUF , G_TYPE_INT
pixbuf := gdk_pixbuf_new_from_file( "../../images/gnome-gsame.png" )
for nMonth := 1 to len( aMonths )
APPEND TREE_STORE oLbx ITER aParent VALUES aMonths[nMonth]
SET TREE_STORE oLbx ITER aParent POS 4 VALUE 50
for nDay := 1 to 30
if nToday == 7
SET TREE_STORE oLbx ITER aParent POS 2 VALUE .T.
nToday = 1
else
nToday += 1
endif
SET TREE_STORE oLbx ITER aParent POS 2 VALUE .T.
APPEND TREE_STORE oLbx PARENT aParent ;
ITER aChild ;
VALUES aDays[nToday] + " " +;
str(nDay,2) + " de " + aMonths[nMonth] + " de 2.005"
if aDays[nToday] == "Sabado" .OR. aDays[nToday] == "Domingo"
SET TREE_STORE oLbx ITER aChild POS 2 VALUE .T.
SET TREE_STORE oLbx ITER aChild POS 3 VALUE pixbuf
SET TREE_STORE oLbx ITER aChild POS 4 VALUE 100
else
SET TREE_STORE oLbx ITER aChild POS 4 VALUE nDay
endif
next
next
gdk_pixbuf_unref( pixbuf )
/* Ejemplo de INSERTAR un padre y un par de hijos en la primera posicion */
INSERT TREE_STORE oLbx ROW 1 ITER aParent // Padre
SET TREE_STORE oLbx ITER aParent POS 1 VALUE "Hola" // Valor Padre
SET TREE_STORE oLbx ITER aParent POS 4 VALUE 75 // Valor de Progress
INSERT TREE_STORE oLbx ROW 1 ;
ITER aChild PARENT aParent ;
VALUES "Hijo",.T.,pixbuf,100 // Hijo con valores directamenteINSERT TREE_STORE oLbx ROW 1 ;
ITER aIter PARENT aChild ;
VALUES "SubHijo",.F.,,50 // Hijo con valores directamenteReturn oLbx
Saludos.
Escrito por Rafa Carmona a las Octubre 24, 2005 03:42 PMTu Duermes ????
Tu trabajo es excelente y genera una sana envidia por tus conocimientos.
Atte.,
Lautaro Moreira
网络营销软件
网络营销软件
网络营销软件
群发软件
群发软件
---
群发软件
博客群建软件
网络营销软件
论坛群发软件
网站排名软件
群发软件
推广小助手破解版
论坛群发
网站排名软件
群发软件
推荐给你很好的群发软件和信息群发软件和供求群发软件
推荐给你很好的群发软件和信息群发软件和供求群发软件博客群发软件网络营销软件网络营销软件
网站排名软件网站排名软件网站优化软件信息群发软件信息群发软件信息群发软件论坛群发软件网站推广软件网站推广软件博客群发软件博客群发软件
群发软件
网络营销软件
论坛群发
网站推广软件
群发软件群发软件博客群发软件论坛群发软件网络营销软件论坛群发软件
信息群发软件推广软件网站推广软件网络营销软件网站推广软件群发软件网站排名软件网站推广软件博客群发软件论坛群发软件群发软件网站排名软件网站推广软件博客群发软件论坛群发软件
网站排名软件
群发软件
博客群发软件
网站排名软件
网站推广软件
群发软件信息群发软件
免费论坛群发软件
论坛群发软件
网站排名软件
免费博客群发软件
网站推广软件
群发软件
博客群发软件
网站排名软件
网站推广软件
群发软件信息群发软件
免费论坛群发软件
论坛群发软件
网站排名软件
免费博客群发软件
博客群发软件
信息群发软件
论坛群发软件
信息群发软件
博客群发软件
qq群发软件
邮件群发软件
博客群建软件
企业名录搜索软件
信息群发软件
邮件群发软件
论坛群发软件
博客群发软件
网站推广软件
网络营销软件
全能营销破解版
网络营销软件
论坛群发软件
论坛群发软件
论坛群发软件
网络营销软件
信息群发软件
信息群发软件
信息群发软件
群发软件
论坛群发软件