14.事件
| Event | 含义 | p1 | p2 | p3 | p4 |
|---|---|---|---|---|---|
| SelChanged | 当前行或单元格已变化(被切换) | 行号 | 列名(见备注) | ||
| 备注:当p2参数为空串时, 表示当前行已变化: 否则表示当前单元格已变化, 并且进入编辑状态 | |||||
| Clicked | 情形1: 鼠标点到某单元格 | 行号 | 列名 | 如果当前列为超链接, 则为本单元格的内容 | HyperLink |
| 情形2: 鼠标点到某列表头 | -1 | 列名 | 1 / 0 / icon(见备注) | ||
| 备注:如果是isCheckboxOnly 列, 则p3为 1 或 0; 如果是点击在headerIcon小图标上,则p3为串icon | |||||
| 情形3: 鼠标点到 EditWithButton 输入框右侧的按钮 | 行号 | 列名 | 见备注 | ||
| 备注:p4参数规定为:如果当前列为 Button 型 或 editWithButton 型, 鼠标点在 button 上则为 "button";如果列中有多个 button,那么分别为 "button1"、"button2"... 依次类推 | |||||
| 情形4: 鼠标点到下拉 DropTreelist 弹出窗的自定义按钮上 | 行号 | 列名 | DropdownButton | 按钮的 id | |
| DblClicked | 鼠标双击某单元格 | 行号 | 列名 | ||
| 备注:可执行全局函数CalcelEvent( )阻止继续执行 | |||||
| BeforeEdit | 某单元进入编辑(输入)前 | 行号 | 列名 | ||
| 备注:可执行全局函数CalcelEvent( )阻止继续执行 | |||||
| EditChanged | 某单元被修改 | 行号 | 列名 | ||
| 执行了右键菜单的"粘贴" | 开始行号 | 开始列名 | 结束行号 | 结束列名 | |
| 备注:在编辑状态下单元格内部的右键菜单是操作系统的菜单,是不会触发本事件的 | |||||
| DropdownSelChanged | 某单元的下拉 Treelist 的选中行已变 | 行号 | 列名 | 1 - 数据有变化 0 - 数据无变化 |
|
| 备注:该事件和 EditChanged 不太一样, 因为下拉以后, 仍可以通过 Esc 键反悔、 不再触发 EditChanged 事件. 当然,如果您在 <properties> 中设定了 AutoUpdate="true", 那就无法用 Esc 反悔了 | |||||
| BeforeDropdown | 某单元的下拉 List 或下拉 Treelist 正准备下拉 | 行号 | 列名 | ||
| 备注:可执行全局函数CalcelEvent( )阻止继续执行, 但仅对下拉 Treelist 有效, 对下拉 List 无效 | |||||
| EditKeydown | 在编辑状态时输入框的键盘动作 请见备注2 |
行号 | 列名 | 键的ASCII码,例如回车是13、空格是32 | 见备注2 |
| 备注1:EditKeydown 和 EditChar 事件均为在输入框中的键盘事件,EditKeydown 能捕获几乎所有键盘动作,包括非字符的回车、Tab等;而 EditChar 事件则以输入的字符为主,包括中文; | |||||
| 备注2:p4的含义为: 1-Ctrl键也按下了; 2-Shift键也按下了; 3-二者一起按下了 | |||||
| 备注3:您可以执行全局函数 CancelEvent( ) 去阻止继续执行,就如事件没有发生过那样,但不同的ASCII码,您需要在这两个事件中挑选一个执行CancelEvent( ),具体请在演示页“12.事件”中去测试 | |||||
| EditChar | 在编辑状态时输入框的键盘字符 | 行号 | 列名 | 字符的ASCII码 | |
| 备注:EditKeydown 和 EditChar 事件均为在输入框中的键盘事件,EditKeydown 能捕获几乎所有键盘动作,包括非字符的回车、Tab等;而 EditChar 事件则以输入的字符为主,包括中文; | |||||
| Keydown | 在非编辑状态时的键盘动作 | 行号,如果有多行则以逗号分隔 | 键的ASCII码,例如回车是13、空格是32 | 见备注2 | |
| 备注1:可执行全局函数CalcelEvent( )阻止继续执行 | |||||
| 备注2:p4的含义为: 1-Ctrl键也按下了; 2-Shift键也按下了; 3-二者一起按下了 | |||||
| LooseFocus | 某单元刚失去焦点 | 行号 | 列名 | 导致失去焦点的动作键位值: 9 - Tab 13 - 回车 37 - left 38 - up 39 - right; 40 - down 空串 - 鼠标或其它原因导致 |
|
| rowsInserted | 有行插入 | 新行的行号 | 数量 | ||
| BeforeRowsDeleted | 有行即将被删除 | 被删行的行号, 若有多行则以\t分隔 | |||
| 备注:可执行全局函数CalcelEvent( )阻止继续执行 | |||||
| rowsDeleted | 有行被删除 | 被删行的Key, 若有多行则以\t分隔 | 被删除行的原始内容(XML串), 或内存句柄(纯数字串) | ||
| 备注1: 未定义 key 的 Treelist 不会触发该事件; 备注2: 如果P2参数是内存句柄, 可以用全局函数 GetDataString 取得串 | |||||
| LazyLoad | LazyLoad="true"的单列多层树的树杈被首次点击 | 行号 | id号 (当treeformat为byId、byPid时) | ||
| MenuBeforePopup | 鼠标右键菜单即将弹出 | 行号, 可能为-1 |
列名, 有可能为空 |
||
| 备注:在 Chrome 浏览器下必须配合 EnableEventLock 函数使用, 请参考这些函数的文档 | |||||
| BeforePasteCheck | 用于 byPid、鼠标勾选复制或剪切后的粘贴, 在粘贴前触发的事件 | 目标行的行号 | 0/1 - 内容来自复制/剪切 | 0/1 - 作为目标行的兄弟/儿子 | |
| 备注1:在 Chrome 浏览器下必须配合 EnableEventLock 函数使用, 请参考这些函数的文档; 备注2:要获得当前勾选中的行,请调用函数 FindAll; | |||||
| PasteCheck | 用于 byPid、鼠标勾选复制或剪切后的粘贴, 粘贴后触发 | 目标行的行号 | 0/1 - 内容来自复制/剪切 | 0/1 - 作为目标行的兄弟/儿子 | 当内容来自复制时, 新增行的行号(逗号分隔) |
| 备注:复制的源行即勾选行,可调用函数 FindAll 去获得; 剪切粘贴不存在新增行, 也可以用 FindAll 去获得所在的行 | |||||
| MenuClicked | 鼠标右键菜单自定义功能被选中 | 菜单项id | 行号 | 列名 | |
| BeforeDragRow | 行即将被拖拽 | 被拖动的行,多个行则以逗号分隔 | 目的行 | 1/0 - 拖动到目的行的上方/下方 | 见备注2 |
| 备注1:可执行全局函数CalcelEvent( )阻止继续执行 | |||||
| 备注2:p4参数格式为 handle=[?];asChild=true,例如串 "handle=82922093;asChild=true",其中 handle 的含义为源 Treelist 的句柄(可通过 GetHandle 函数获得),如果是自我拖拽,则不出现该项;asChild=true 表示作为子孙拖入,如果非子孙、或者当前非树,则不出现该项. | |||||
| RequestAllPages | 需要加载全部数据,以打印或转换输出 | ||||
| 备注:用于分页显示时 | |||||
| Switched | 被执行了树、列表之间的切换 | ||||
| 备注:仅在弹出菜单时触发, 通过 js 进行切换是不会触发的 | |||||
| Sort | 已重新排序 (触发了排序操作) | 如果<Properties>中定义了IsRemoteSort, 则为“1”,否则是空 |
|||
| CustomAble | 用户修改了界面中与可定制(GetCustom函数)有关的内容, 如选择显示列、列宽等等 | ColHideShow - 列的显示/隐藏有变化 ColWidth - 列的宽度有变化 ColSeq - 列的左右排列次序有变化 |
|||
| 备注:目前 p1 只有这几种,今后版本会继续完善. | |||||
| InvalidMouseWheel | 无效的鼠标滚轮操作 | 如果顶部已经是第一行仍然要上滚,为"up"; 如果底部已经是末行仍要下滚, 则为“down” | |||
| 备注:常用于分页显示情形 | |||||
| Printed | 已打印 (是指打印任务已经发送给操作系统的打印任务队列) |
0 - 普通打印; 1 - 在预览窗口中的打印当前页; 2 - 在预览窗口中的打印全部页; |
|||
| Previewed | 打印预览窗已关闭 | ||||
| Load | 数据已经通过Load( )函数加载 | URL, 空串表示加载的是XML/JSON串 | 0-同步加载 1-异步加载 |
0-加载失败 1-加载成功 |
|
| Imported | 刚从Excel文件导入 | 导入的起始行的行号 | 导入的总行数 | ||
| ExportDialog | 转换输出对话框中,当用户点击"确定"后、文件对话框即将弹出前 | 文件后缀 | |||
| 备注:可以在该事件中执行 SetExportFilename 函数,详见该函数的说明. | |||||
| MouseMoveIn | 鼠标移入某个单元格 | 行号 | 列名 | ||
| 备注1:<Col>设定了 MouseMoveIn 属性值才能生效 | |||||
| 备注2:鼠标在单元格上方停留不动、停留时间超过设定的值才触发该事件 | |||||
| MouseMoveOut | 鼠标移出某个单元格, 和鼠标移入事件 MouseMoveIn 配对 | 行号 | 列名 | ||
| UndoState | Undo状态有改变 | ||||
| DataReach | 已经访问了 dataURL(包括 Load 函数访问) 并得到了数据,但尚未应用该数据 | 内存块的句柄(纯数字串形式) | URL | ||
| 备注1:可以用全局函数 GetDataString / SetDataString 取得或更改内存块中的数据 | |||||
| 备注2:可以用上述2个函数存取数据,但不宜过多调用其它函数,否则会造成不稳定 | |||||
| DropDownDataReach | 某个异步加载数据的下拉已经获得了数据并已完成加载 | 某个下拉资源的 id - 表示此下拉数据已经到达 Complete! - 所有异步下拉的数据已全部到达 |
|||
| 备注1:异步访问http的下拉列表、下拉树列表在初始加载数据时触发 | |||||
| 备注2:同步加载数据的下拉不会触发本事件 | |||||
| 备注3:当全部异步下拉都完成加载后,本事件会再次被触发,p1是固定的串 "Complete!" | |||||
| HotKey | 触发了快捷键 | 快捷键 | 当前行的行号, 如果正在输入的话 | 当前列的列名, 如果正在输入的话 | |
| Device | 设备事件(如扫描仪) | Twain - 表示是扫描仪的事件 | 1 - 扫描成功 2 - 用户取消了操作 3 - 文件写入失败 4 - 未发现可用扫描仪 |
扫描仪扫描成功的文件名, 多个文件间以回车符分隔 | |
| UserEvent | 全局函数 PostMessage 发出的自定义事件 | 自定义 | 自定义 | 自定义 | 自定义 |
| CacheSaved | 全局事件,请参见全局函数 ListenEvent | 缓存的ID | |||
| Download | 全局事件,请参见Freeform组件的同名事件 | ||||
| Upload | 全局事件,请参见Freeform组件的同名事件 | ||||