User Tools

Site Tools


class:application:xcommand

ICommand

Inherited from NULL

Inherited by NULL

Friend class NULL

Description

所有会对数据进行修改的命令和操作被视为一个命令(Command),在XT中命令分为五种类型,窗口命令,无窗口命令,无窗口静默命令,无限交互命令以及特殊定制窗口命令。有窗口的命令通过xml配置文件对窗口进行可视化定制,包括控件以及布局,特殊定制窗口命令在通用窗口基础上多了一个信息代理()。命令必须在命令管理器中注册之后才能通过菜单或者按钮触发,命令的启动则由主框架(MainFrame)负责。一般来说,每个命令都需要输入参数(IParameter),用户通过命令窗口输入参数,然后命令再通过窗口获取参数值,最后来执行相应的操作,命令的输出往往对应某种数据的变化(添加、删除或者修改),它可能会导致数据视图的变化,通过函数updateFrame可指示哪些部分需要更新。XT中所有的命令都从该基类继承,重新实现相应的接口函数即可。 XT系统中所有的命令必须在命令管理器中注册之后才能被使用。

Members

Public interface


IMainFrame * m_pFrm

ICommandWindow * m_pDlg

XDocument * m_pDoc

const CommandIndex * m_pIndex

ulong m_ilNextCid

XPicker * m_pPicker

bool m_bScript


ICommand(IMainFrame * mf, XDocument * doc)

  • function: 构造函数
  • parameters:
    1. [i]IMainFrame * mf: 主框架指针
    2. [i] XDocument * doc: 文档指针
  • return value: 无

void setNextCid(ulong cid)

  • function: 设定后续命令ID
  • parameters:
    1. [i]ulong cid: 后续命令ID
  • return value: 无

ulong getNextCid()

  • function: 获取后续命令ID
  • parameters: NULL
  • return value: 后续命令ID

void invalidate()

  • function: 使命令失效
  • parameters: NULL
  • return value: 无

void setScriptMode(bool b)

  • function: 设置脚本模式
  • parameters:
    1. [i]bool b: 是否启动脚本模式
  • return value: 无

bool isScriptMode() const

  • function: 是否脚本模式
  • parameters: NULL
  • return value: 脚本模式返回true,否则返回false

bool isValid() const

  • function: 命令是否可用
  • parameters: NULL
  • return value: 如文档为空或主框架为空,返回false;否则返回true

bool isDocumentReady()

  • function: 判断命令的文档指针是否可用
  • parameters: NULL
  • return value: 若文档为空,返回false;否则返回true

XDocument * getDocument()

  • function: 获取命令的文档指针
  • parameters: 无
  • return value: 命令的文档指针

void setDocument(XDocument * doc)

  • function: 设置命令的文档
  • parameters:
    1. [i]XDocument * doc: 文档对象
  • return value: 无

virtual void initWindow()

  • function: 初始化命令的对话框窗口
  • parameters: NULL
  • return value: 无

virtual void onDataExchange(const char * dxdialog = NULL)

  • function: 交换内存参数与界面控件状态值
  • parameters:
    1. [i]const char * dxdialog = NULL: 指定交换的子窗口名,若为空则交换主窗口的控件值
  • return value: 无

virtual void exchangeScript(ParamList * param)

  • function: 交换内存参数与脚本参数值
  • parameters:
    1. [i]ParamList * param: 脚本参数对象指针
  • return value: 无

virtual void updateData(bool bSaveValidate = true)

  • function: 交换内存参数与界面控件状态值
  • parameters:
    1. [i]bool bSaveValidate = true: 为真将界面状态值更新到内存参数中,否则将内存参数更新到界面控件中
  • return value: 无

void updateToDialog()

  • function: 将内存参数值更新到界面控件中
  • parameters: NULL
  • return value: 无

void updateFromDialog()

  • function: 将界面控件的状态值更新到内存参数中
  • parameters: NULL
  • return value: 无

virtual void updateControl(const char * configStr)

  • function: 更新控件状态
  • parameters:
    1. [i]const char * configStr: 控件名
  • return value: 无

virtual void onControlEvent(const char * ctrlName, TypeID event = Event_Any)

  • function: 响应控件的交互事件
  • parameters:
    1. [i]const char * ctrlName:发生交互事件的控件名
    2. [i] TypeID event = Event_Any: 事件类型,默认为任何交互事件类型
  • return value: 无

virtual void onPickChanged()

  • function: 当用户选择对象时更新对话框
  • parameters: NULL
  • return value: 无

virtual void onPickRoleChanged()

  • function:
  • parameters: NULL
  • return value:

virtual void onViewChanged()

  • function: 当视图变化时更新对话框
  • parameters: NULL
  • return value:

virtual ErrorCode execute()

  • function: 执行命令
  • parameters: NULL
  • return value: 成本执行返回0,否则返回对应错误码

virtual const char * getUISettingXml()

  • function: 获取命令对话框的文本配置文件路径
  • parameters: NULL
  • return value: 文本配置文件路径字符串

virtual const char * getSubroutine()

  • function:
  • parameters: NULL
  • return value:

virtual void setSubroutine(const char * subroutine)

  • function:
  • parameters:
    1. [i]const char * subroutine:
  • return value:

virtual void setParam(const CmdParam * param)

  • function: 设置命令的参数
  • parameters:
    1. [i]const CmdParam * param: 命令参数结构体指针
  • return value: 无

virtual bool setContextParam(const TreeNode * targetNode, const TreeNode * fromNode = 0)

  • function: 通过模型树右键菜单设置命令参数
  • parameters:
    1. [i]const TreeNode * targetNode: 右键点击的模型树节点
    2. [i] const TreeNode * fromNode = 0: 辅助模型树节点,一般在拷贝、拖拽时用于指定源节点
  • return value: 如targetNode与命令匹配,返回true;否则返回false

virtual void setTarget(vector<const XItem *> * tars, int role = 0)

  • function: 设置命令的应用对象
  • parameters:
    1. [i]vector<const XItem *> * tars: 应用对象数组
    2. [i] int role = 0: 对象的角色
  • return value: 无

virtual CmdParam * getParam()

  • function: 返回命令参数指针
  • parameters: NULL
  • return value: 命令参数指针

virtual CommandType getType() = 0

  • function: 返回命令的类型
  • parameters: NULL
  • return value: 命令类型ID

virtual const char * getName() const = 0

  • function: 返回命令的名称
  • parameters: NULL
  • return value: 命令名字符串

ulong getId() const

  • function: 返回命令的ID
  • parameters: NULL
  • return value: 命令ID

void setIndex(const CommandIndex * idx)

  • function: 设置命令的索引
  • parameters:
    1. [i]const CommandIndex * idx: 索引指针
  • return value: 无

const CommandIndex * index() const

  • function: 返回命令的索引
  • parameters: NULL
  • return value: 索引指针

virtual const char * getHint()

  • function: 返回命令的提示
  • parameters: 无
  • return value: 提示字符串

virtual bool checkContext()

  • function: 检查命令参数与选择的对象是否满足执行命令的条件
  • parameters: 无
  • return value: 若满足命令执行返回真,否则返回false

virtual void updateFrame()

  • function: 当成功执行命令时更新框架
  • parameters: NULL
  • return value: 无

virtual void getActionSetting(string * setting)

  • function: 当命令为状态命令时,获取当前状态的格式字符串
  • parameters:
    1. [i]string * setting: 状态格式字符串
  • return value: 无

virtual void updateParam()

  • function: 在成功执行之后更新命令参数
  • parameters: NULL
  • return value: 无

virtual bool isParamModified()

  • function:
  • parameters: NULL
  • return value:

virtual ~ICommand()

  • function: 析构函数
  • parameters: 无
  • return value: 无
class/application/xcommand.txt · Last modified: 2024/02/29 14:26 (external edit)