说明:
TVictorFsmStateT<T> 是带计时功能和事件的状态模板,只封装了几个简单的数据,不占资源。
头文件:
Vcl.VictorFSM.h
Fmx.VictorFSM.h
示例程序:
串口文件收发的例子,已经包含在控件包里面
相关控件:
TVictorFSM, TYbCommDevice
继承关系:
TVictorFsmStateT<> 模板没有继承关系。
模板参数:
template <class TStateType> class TVictorFsmStateT
TStateType: 可以是枚举类型或整数类型,作为 FSM 状态的序号。
属性:
属性 |
类型 |
描述 |
State |
TStateType |
状态,可读写。类型为模板的参数 TStateType 类型的,可以是枚举类型或整数类型。
给这个属性赋值会立即触发和执行 OnSetState 事件,没有缓冲和其他处理,会直接重入。 |
Elapsed |
DWORD |
给 State 属性赋值到现在持续的时间,即处于这个状态经历的时间 (毫秒)
这个属性是可读写的,即允许修改持续的时间。 |
方法:
方法 |
描述 |
TVictorFsmStateT |
构造函数
inline __fastcall TVictorFsmStateT(); |
operator TStateType |
类型转换操作符,把 TVictorFsmStateT 转换为 TStateType 类型,TStateType 为模板参数,枚举或整型。
定义:
inline operator TStateType() { return _stState; }
inline operator const TStateType() const { return _stState; } |
operator = |
类型转换/赋值操作符,把 TStateType 类型赋值给 TVictorFsmStateT 类型,会把这个数值赋值给 属性,并且触发和执行 OnSetState 事件,TStateType 为模板参数,枚举或整型。
定义:
inline const TVictorFsmStateT &operator = (const TStateType st){ fSetState(st); return *this; } |
事件:
事件 |
描述 |
OnSetState |
给 State 属性赋值,或者通过 operator = 给模板对象赋值,都会触发和执行这个事件。
定义:
__property TSetState OnSetState = { read = _lpfnSetState , write = _lpfnSetState };
typedef void __fastcall (__closure *TSetState)(TVictorFsmStateT *Sender, TStateType &stNewState, TStateType stOldState);
参数:
Sender: 产生事件的类或控件
stNewState: 新的 State 属性值
stOldState: 旧的 State 属性值
如果给 State 属性赋和以前相同的值,也会触发和执行这个事件,此时 stNewState 和 stOldState 的值相同 |
|