Empecemos con checar cuantos "hijos" tiene la ventana principal, llamada "."
% winfo children
wrong # args: should be "winfo children window"
Me falló porque faltó un parámetro
% winfo children .
No me regresa nada, es que aun no le pongo controles a esta ventana
% proc tl {} {};edit tl
Edito (en otra ventana) un proc que crea una tablelist accesible con la variable "tbl"
proc tl {} {
global tbl
set tbl .tbl
tablelist::tablelist $tbl\
-columns {0 "A" 0 "B" 0 "C" 0 "D" 0 "E"} -height 15 -width 100
pack $tbl
}
Creo un botón
% button .btn -text rengSel?
.btn
% pack button
wrong # args: should be "pack option arg ?arg ...?"
Me fallo' porque no hay botón llamado "button" (se llama .btn)
% pack .btn
Ahora si aparece botón en la ventana
% tl
invalid command name "tablelist::tablelist"
Falla porque no puse la "incorporación" de la librería en el proc...
Ahora si lo hago...
% package require tablelist
5.7
% tl
Ahora si aparece la tabla en la ventana (pero tuve que hacer un "resize" manual)
Le hago ediciones para que se le inserten renglones a partir de la lista de "hijos" de "."
% edit tl
Cuales son los "hijos" de "." ?
% winfo children .
.btn .__helpLabel .tbl .tbl-corner
Le inserto los hijos
% $tbl insert end [winfo children .]
k0
Pero me aparecen en un solo renglón...eso no es lo que quería...
"." tiene 4 hijos...
% llength [winfo children .]
4
Veamos esos 4 "hijos"
% foreach ctrl [winfo children .] {
puts $ctrl
}
.btn
.__helpLabel
.tbl
.tbl-corner
Quiero borrar el renglón...
% $tbl delete all
bad row index "all": must be active, anchor, end, top, bottom, @x,y, a number, a full key, or a name
Falla porque "all" no es un indice válido
% $tbl delete 0 end
Ahora si se borró
Le inserto un renglón por cada "hijo"
% foreach ctrl [winfo children .] {
$tbl insert $ctrl
}
bad row index ".btn": must be active, anchor, end, top, bottom, @x,y, a number, a full key, or a name
Falla porque me faltó poner donde insertar
Ahora si...
% foreach ctrl [winfo children .] {
$tbl insert end $ctrl
}
Al tener seleccionado el primer renglón, el comando "curselection" indica cual es la selección actual:
(numeración empieza en cero)
% $tbl curselection
0
Al tener seleccionado el renglón 2:
% $tbl curselection
1
Al tener seleccionado el renglón 3:
% $tbl curselection
2
Al tener seleccionado el renglón 4:
% $tbl curselection
3
Para obtener el valor de una de las celdas:
% $tbl cellcget 1,1 -text
No devuelve nada porque no hay nada en segunda columna, (recuerde, numeración empieza en cero)
Ah, entonces es así:
% $tbl cellcget 1,0 -text
.__helpLabel
Para obtener el valor en celda de:
renglón = la selección actual
columna = 0 (numeración empieza en cero)
y estando seleccionado el renglon cuyo contenido de texto es "tbl-corner"
% $tbl cellcget [$tbl curselection],0 -text
.tbl-corner
Asignarle una acción a botón existente
% .btn configure -command {puts [$tbl cellcget [$tbl curselection],0 -text]}
Al hacer click en el botón...
.tbl-corner
Luego selecciono el tercer renglón en la tabla...y hacer click en botón
.tbl
(ya que ese es el contenido de esa celda)
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment