规范 - 如何就地编辑 table 的内容
Spec - How to edit the contents of a table in place
我有一个 SpTablePresenter
,我想编辑单元格内容。
在许多框架中,可以直接就地编辑 table 的内容,而无需打开新组件(对话框或主从样式)。我如何使用 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 后端)此输出:
我有一个 SpTablePresenter
,我想编辑单元格内容。
在许多框架中,可以直接就地编辑 table 的内容,而无需打开新组件(对话框或主从样式)。我如何使用 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 后端)此输出: