Get or Set Value, Formula, or Formatted Text"
(→Editor) |
|||
Line 69: | Line 69: | ||
====Editor==== | ====Editor==== | ||
− | For editor, we can use onOK event, which menus when user click '''Enter''' keyboard, set cell's value and make spreadsheet's focus to next cell | + | For editor, we can use the onOK event, which menus when user click '''Enter''' keyboard, set cell's value and make spreadsheet's focus to next cell |
<source lang="java" high="2,3"> | <source lang="java" high="2,3"> | ||
public void onOK$formulaEditor() { | public void onOK$formulaEditor() { |
Revision as of 08:58, 30 August 2011
Purpose
ZK Spreadsheet uses Range.getEditText() to get cell's edit text, and Range.setEditText(String)to set cell's text as input by the user.
ZUML
<zk>
<div width="100%" height="100%" apply="demo.EditorComposer" >
<div height="3px"></div>
<combobox id="focusCombobox" mold="rounded" style="text-align:center;">
</combobox>
<textbox id="formulaEditor" cols="100"/>
<div height="3px"></div>
<spreadsheet id="spreadsheet" src="/demo_sample.xls"
maxrows="200"
maxcolumns="40"
width="100%"
height="450px"></spreadsheet>
</div>
</zk>
Composer
Current Cell Text
We can use onCellFocused event to get the current focus cell and display the cell's text.
public void onCellFocused$spreadsheet(CellEvent event) {
int row = event.getRow();
int col = event.getColumn();
focusCombobox.setText(spreadsheet.getRowtitle(row) + spreadsheet.getColumntitle(col));
Worksheet sheet = spreadsheet.getSelectedSheet();
currentCell = Utils.getCell(sheet, row, col);
currentRange = Ranges.range(sheet, row, col);
formulaEditor.setText(currentRange.getEditText());
}
Cell Position
First, we need to get the current cell's position. We can get row and column index from CellEvent, then use Spreadsheet.getRowtitle(String) and Spreadsheet.getColumntitle((String) to get the current cell's title.
public void onCellFocused$spreadsheet(CellEvent event) {
int row = event.getRow();
int col = event.getColumn();
focusCombobox.setText(spreadsheet.getRowtitle(row) + spreadsheet.getColumntitle(col));
...
Cell Value
After we get the cell's position, we can get the cell's value from Range.getEditText()
public void onCellFocused$spreadsheet(CellEvent event) {
...
Worksheet sheet = spreadsheet.getSelectedSheet();
currentCell = Utils.getCell(sheet, row, col);
currentRange = Ranges.range(sheet, row, col);
formulaEditor.setText(currentRange.getEditText());
}
Editor
For editor, we can use the onOK event, which menus when user click Enter keyboard, set cell's value and make spreadsheet's focus to next cell
public void onOK$formulaEditor() {
currentRange.setEditText(formulaEditor.getText());
spreadsheet.focusTo(currentCell.getRowIndex() + 1, currentCell.getColumnIndex());
}
Second, we can also use onChange and onChanging event to get current editor's value and set cell's value
public void onChanging$formulaEditor(InputEvent event) {
if (currentCell.getCellType() != Cell.CELL_TYPE_FORMULA)
currentRange.setEditText(event.getValue());
}
public void onChange$formulaEditor() {
currentRange.setEditText(formulaEditor.getText());
}
View complete source of ZUML editor.zul
View complete source of composer EditorComposer.java
Version History
Version | Date | Content |
---|---|---|
All source code listed in this book is at Github.