点击或拖拽改变大小

SQLTable.Notify 方法

X#
在服务器的操作方法完成一些重要事件后,提供一个自动调用的方法: 列已更改,服务器位置已更更改,某些操作已完成。它的标准实现是向其附加的客户端广播相同的通知。

命名空间:  XSharp.VO.SDK
程序集:  XSharp.VOSQLClasses (在 XSharp.VOSQLClasses.dll 中) 版本:2.22 GA
语法
 VIRTUAL METHOD Notify(
	kNotification AS LONG,
	 uDescription AS USUAL
) AS USUAL
查看代码

参数

kNotification
类型:Int32
标识事件,指定为下表中的常量之一。
uDescription
类型:__Usual
仅用于某些通知类型。请参阅下表中的描述

返回值

类型:__Usual
如果成功则返回 TRUE;否则返回 FALSE。
备注
常量描述
NOTIFYAPPEND 一个空白记录已附加到服务器; 服务器仍然定位在这个新记录上,并且其值尚未最终确定。
NOTIFYCLEARRELATION不会发送到数据浏览器。
NOTIFYCLOSE服务器打算关闭自身。
NOTIFYCOMPLETION 服务器已完成某些不涉及重新定位服务器或更改数据的大型操作(如重新索引)。 这使客户端有机会更新用户的视觉指示,表明某些操作已完成。
NOTIFYDELETE当前记录已被删除,服务器现在根据其处理删除的规则进行定位。浏览器应相应地刷新其显示。
NOTIFYFIELDCHANGE 字段已更改。uDescription 是字段名称作为符号。请注意,浏览器可能不包含具有指示名称的列。服务器只知道它有一个该名称的字段并且它已更改,并通知所有客户端以防它们感兴趣。
NOTIFYFILECHANGE 服务器已执行某些对数据进行大量更改的方法;浏览器对服务器及其数据的所有了解可能已过时,应从服务器刷新所有信息以及所有依赖于数据或其位置的计算。
NOTIFYGOBOTTOM 服务器已移动到其最后一条记录。许多客户端将此视为记录更改, 但数据浏览器可以将定位到末尾视为特殊情况。
NOTIFYGOTOP 服务器已移动到其第一条记录。许多客户端将此视为记录更改,但数据浏览器可以将定位到顶部视为特殊情况。
NOTIFYINTENTTOMOVE 服务器打算进行移动。(请注意,移动可能是由另一个客户端发起的。)浏览器应确保在移动完成之前保存其所有数据(如有必要)。标准实现检查验证状态。如果浏览器包含无效数据,用户可以选择纠正错误或放弃数据。
NOTIFYRECORDCHANGE 服务器的记录位置已更改。所有客户端在任何移动后都会收到通知,以便它们可以从服务器刷新其显示。浏览器需要根据移动的距离智能地更新其显示。uDescription 可能指示移动的长度(记录的数量)。浏览器可以使用此信息进行显示优化,但不能依赖其可用性。
NOTIFYRELATIONCHANGE 不会发送到数据浏览器(服务器之间的关系更改作为文件更改传输到客户端)。
此 Notify() 方法是链接浏览器和服务器之间自动通知的核心, 允许任何窗口更改字段值或发起移动,并确保所有 客户端窗口反映更改。
任何注册为服务器客户端的类都必须智能地响应 Notify 消息。
与定义的常量一样,您永远不应依赖常量的实际值——它们不会 必然保持不变。然而,常量确实保持其顺序:
  • NOTIFYFIELDCHANGE - 最低
  • NOTIFYCLOSE - .
  • NOTIFYCOMPLETION - .
  • NOTIFYINTENTTOMOVE - .
  • NOTIFYRECORDCHANGE - .
  • NOTIFYGOBOTTOM - .
  • NOTIFYGOTOP - .
  • NOTIFYDELETE - .
  • NOTIFYAPPEND - .
  • NOTIFYFILECHANGE - .
  • NOTIFYRELATIONCHANGE - .
  • NOTIFYCLEARRELATION - 最高
因此,您可以可靠地编写:
X#
1IF kNotification > NOTIFYINTENTTOMOVE;
2    .AND. kNotification < NOTIFYFILECHANGE
3    ... // 仅记录级别移动
4ENDIF
参见