smalltalk - 规范 - 如何就地编辑表格的内容

标签 smalltalk pharo

我有一个 SpTablePresenter,我想编辑单元格内容。
在许多框架中,可以直接就地编辑表格的内容,而无需打开新组件(对话框或主从样式)。我怎样才能用 Spec 做到这一点?

最佳答案

Spec 中的表和树表实现了就地编辑字符串列的机制

在 Spec 中,只需将列声明为可编辑并发送 beEditable 消息并添加回调以通过发送 onAcceptEdition: 来处理编辑,即可编辑字符串列,它接收两个参数,正在编辑的对象和编辑后的字符串。

以下代码将展示如何完成此操作:

app := SpApplication new.
app useBackend: #Gtk.
 
presenter := SpPresenter new.
presenter application: app.

presenter layout: (SpBoxLayout newTopToBottom
    add: (tablePresenter := presenter newTable);
    yourself).

tablePresenter 
    addColumn: (SpStringTableColumn title: 'R/O' evaluated: #key);
    addColumn: ((SpStringTableColumn 
            title: 'Editable' 
            evaluated: #value)
        beEditable; 
        onAcceptEdition: [ :anAssociation :aString | anAssociation value: aString ];
        yourself).

tablePresenter items: { 1 -> 'One'. 2 -> 'Two'. 3 -> 'Three' }.
    
presenter asWindow 
    title: 'Example editing cells';
    open

这将产生(使用 Gtk3 后端)此输出:

example edit in place

关于smalltalk - 规范 - 如何就地编辑表格的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72257090/

相关文章:

smalltalk - 带有smalltalk的本地独立可执行文件?

widget - 在 Spec 中添加一行会导致一列?

smalltalk - Smalltallk - 如何获取类的对象(当前实例)中所有实例变量的数组(或集合)?

pharo - 如何在 Pharo 中添加新方法?

formatting - 如何在 Smalltalk/Pharo 中打印固定字符数的数字

smalltalk - Smalltalk 中 Symbol 的 "best practice"可移植方式是什么?

window - 如何设置 Squeak 和 Pharo 中的主窗口标题?

smalltalk - Smalltalk中new和initialize的区别?

smalltalk - 在 String 变量 x ='X' 上调用 sourceCodeAt。怎么改成X?

tokenize - Smalltalk,换行符