您好我是tablelist的新手,并且在编辑单元格后探索了读取修改后的值的选项。
global canvas
set canvas .t
tablelist::tablelist .t -columns { 0 TYPE 0 VALUE} -selectmode single \
-selecttype row -editselectedonly 0 -editstartcommand editStartCmd \
-editendcommand editEndCmd
使用editStartcomand
调用函数,我能够获取正在编辑的单元格
proc editStartCmd {canvas row column initialText} {
global cell
set cell $row,$column
return $initialText
}
现在我无法知道获取修改值的过程,比较编辑前和编辑后的文本。我在表格列表下阅读了INTERACTIVE CELL EDITING,但正在寻找一个例子来准确地确定程序。
答案 0 :(得分:0)
您已经在tablelist creation命令中使用它:
-editendcommand editEndCmd
您可以定义proc editEndCmd
来比较值。假设你让变量$initialText
成为proc editStartCmd
的全局变量,那么你可以使用类似的东西:
proc editEndCmd {canvas row column finalText} {
global initialText
# e.g. both initialText and finalText are numbers
# Make the proc print 1 if the modified value is smaller, 0 if larger or equal
# to the initial value
puts [expr {$initialText > $finalText}]
return $finalText
}
如果$finalText
不合适,您可以使上述过程返回$initialText
,以便将插入的值恢复为之前的值。