¿ Como podemos hacer que cuando presionamos una columna ordenada se establezca la busqueda sobre esa columna ?
Bueno, pues esa pregunta hace tiempo, que me llevaba rondando por la cabeza,
y ayer, no pude más y termine de implementarlo.
Pues es mas simple de lo que parece ;-)
Teniendo un vista:
DEFINE TREEVIEW oTreeView ID "vista1" RESOURCE cGlade
Creamos un columna ordenable:
DEFINE TREEVIEWCOLUMN oCol COLUMN 1 TITLE "Libro" TYPE "text" OF oTreeView SORT
Y ahora, solamente nos quedará definir como establecer la columna de busqueda:
1.- Conectaremos la señal clicked de la columna ;
oCol:Connect( "clicked" )
2.- Establecemos a traves de un codeblock, la accion a ejecutar:
oCol:bAction := { |oSenderl| oTreeView:SetSearchColumn( oSender:GetSort() ) }
La explicacion es bastante simple:
Cuando se pulsa el header de la columna, esta ejecuta el codeblock, que
recibe como paremetro, oSender, quien es la columna que a emitido esa
señal.
El method SetSeachColumn( nColumn ) , no necesita mucha explicacion, y
determina en la vista, oTreeView, sobre que columna se va a proceder a buscar.
Pero, nos queda averiguar que columna es, pues tan simple como preguntar,
que columna actual es la que tiene establecido la ordenacion, a traves del
method GetSort().
Dicho method, nos devuelve en que columna actualmente esta establecido la
ordenacion.
Debeis de pensar , que por el simple hecho de que una columna esta ordenada en la vista, no significa que obligatoriamente sea sobre la que se busca.
Es posible tener ordenada la vista por libros, A.B.C..D.., y el criterio de busqueda sea por el codigo ISBN, por ejemplo, aunque no muy práctico, si es totalmente
correcto ese funcionamiento, claro visto desde la perpestiva del programador, pero ya sabemos como el usuario tardaria 2 segundos en coger el telefono y meterte la bronca porque no se posiciona correctamente ;-)
Quizas podria especificar en el comando TREEVIEWCOLUMN alguna clausula,
para hacerlo mas fácil, pero de momento, no esta realizado, un HEADER_ACTION uAction, o ACTION a secas, no se, ya veremos.
Esto estará en la proxima , espero que pronta, release de T-Gtk.
Saludos
Rafa Carmona