TCL表列表 - 如何使用-editend命令读取修改后的值

时间:2017-03-07 13:02:37

标签: tcl

您好我是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,但正在寻找一个例子来准确地确定程序。

1 个答案:

答案 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,以便将插入的值恢复为之前的值。