Get or Set Value, Formula, or Formatted Text"
m (correct highlight (via JWB)) |
|||
Line 11: | Line 11: | ||
===ZUML=== | ===ZUML=== | ||
− | <source lang="xml" | + | <source lang="xml" highlight="4,6,8"> |
<zk> | <zk> | ||
<div width="100%" height="100%" apply="demo.EditorComposer" > | <div width="100%" height="100%" apply="demo.EditorComposer" > | ||
Line 32: | Line 32: | ||
====Current Cell Text==== | ====Current Cell Text==== | ||
We can use onCellFocused event to get the current focus cell and display the cell's text. | We can use onCellFocused event to get the current focus cell and display the cell's text. | ||
− | <source lang="java" | + | <source lang="java" highlight="4,9"> |
public void onCellFocused$spreadsheet(CellEvent event) { | public void onCellFocused$spreadsheet(CellEvent event) { | ||
int row = event.getRow(); | int row = event.getRow(); | ||
Line 48: | Line 48: | ||
First, we need to get the current cell's position. We can get row and column index from CellEvent, then use <javadoc directory="zss" method="getRowtitle(java.lang.String)">org.zkoss.zss.ui.Spreadsheet</javadoc> and <javadoc directory="zss" method="getColumntitle((java.lang.String)">org.zkoss.zss.ui.Spreadsheet</javadoc> to get the current cell's title. | First, we need to get the current cell's position. We can get row and column index from CellEvent, then use <javadoc directory="zss" method="getRowtitle(java.lang.String)">org.zkoss.zss.ui.Spreadsheet</javadoc> and <javadoc directory="zss" method="getColumntitle((java.lang.String)">org.zkoss.zss.ui.Spreadsheet</javadoc> to get the current cell's title. | ||
− | <source lang="java" | + | <source lang="java" highlight="4"> |
public void onCellFocused$spreadsheet(CellEvent event) { | public void onCellFocused$spreadsheet(CellEvent event) { | ||
int row = event.getRow(); | int row = event.getRow(); | ||
Line 59: | Line 59: | ||
After we get the cell's position, we can get the cell's value from <javadoc directory="zss" method="getEditText()">org.zkoss.zss.model.Range</javadoc> | After we get the cell's position, we can get the cell's value from <javadoc directory="zss" method="getEditText()">org.zkoss.zss.model.Range</javadoc> | ||
− | <source lang="java" | + | <source lang="java" highlight="7"> |
public void onCellFocused$spreadsheet(CellEvent event) { | public void onCellFocused$spreadsheet(CellEvent event) { | ||
... | ... | ||
Line 73: | Line 73: | ||
For editor, we can use the onOK event, which menus when the user click '''Enter''' keyboard, set cell's value and make spreadsheet's focus to the next cell | For editor, we can use the onOK event, which menus when the user click '''Enter''' keyboard, set cell's value and make spreadsheet's focus to the next cell | ||
− | <source lang="java" | + | <source lang="java" highlight="2,3"> |
public void onOK$formulaEditor() { | public void onOK$formulaEditor() { | ||
currentRange.setEditText(formulaEditor.getText()); | currentRange.setEditText(formulaEditor.getText()); | ||
Line 81: | Line 81: | ||
Second, we can also use the onChange and onChanging event to get the current editor's value and set the cell's value. | Second, we can also use the onChange and onChanging event to get the current editor's value and set the cell's value. | ||
− | <source lang="java" | + | <source lang="java" highlight="3, 7"> |
public void onChanging$formulaEditor(InputEvent event) { | public void onChanging$formulaEditor(InputEvent event) { | ||
if (currentCell.getCellType() != Cell.CELL_TYPE_FORMULA) | if (currentCell.getCellType() != Cell.CELL_TYPE_FORMULA) |
Latest revision as of 12:55, 19 January 2022
This article is out of date, please refer to http://books.zkoss.org/wiki/ZK_Spreadsheet_Essentials for more up to date information.
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 the user click Enter keyboard, set cell's value and make spreadsheet's focus to the next cell
public void onOK$formulaEditor() {
currentRange.setEditText(formulaEditor.getText());
spreadsheet.focusTo(currentCell.getRowIndex() + 1, currentCell.getColumnIndex());
}
Second, we can also use the onChange and onChanging event to get the current editor's value and set the 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 the complete source of ZUML editor.zul
View the complete source of composer EditorComposer.java
Version History
Version | Date | Content |
---|---|---|
All source code listed in this book is at Github.