#pragma once #include #include "ui_DialogDataLink.h" #include "Common.h" /// /// 用于配置属性表中Datalink信息的对话框 /// class VControlObject; class DialogDataLink : public QDialog { Q_OBJECT public: DialogDataLink( const QString& strPropertyName, VControlObject* pCurrentObject, const DataLink& value, QWidget *parent = Q_NULLPTR ); ~DialogDataLink(); DataLink getValue() const; // 设置数值 void setValue(const DataLink& value); //// 将如下几个函数设置为静态公开函数(用于反序列化使用) // //// 绑定dll中的信息用于后续同步 //static bool bindSyncInformation(const DataLink& dataLink, VControlObject* pVControl); //// 绑定dll中的信息用于后续同步(控件类型) //static bool bindSyncByControl(TOOL* pTool, _INTERFACE* pDllInf, VControlObject* pVControl); //// 绑定dll中的信息用于后续同步(数值类型) //static bool bindSyncByValue(TOOL* pTool, _INTERFACE* pDllInf, VControlObject* pVControl); private: Ui::DialogDataLink ui; protected: // 对话框初始化 void initUI(); // 初始化数据链接分组 void initComboGroup(); // 按照一些特殊的属性名称来分组(例如Image中的图像链接、HObject、HTuple链接等等) void initComboGroupByPropertyName(); // 按Button类型初始化分组 void initComboGroupByButton(); // 按ValueControl类型初始化分组 void initComboGroupByValue(); // 其他控件类型初始化分组 void initComboGroupByOther(); // 添加系统命令 void AddSystemCmdToTree(); // 添加选中的Pou Tool到树形结构中 void AddPouToolsToTree(const QString& strGroup); // 按Button类型添加Pou Tool void AddPouToolsByButton(POU* pPou); // 按ValueControl类型添加Pou Tool void AddPouToolsByValue(POU* pPou); // 按复杂控件类型添加Pou Tool void AddPouToolsByComplexValue(POU* pPou); // 按其他控件类型添加Pou Tool void AddPouToolsByOther(POU* pPou); // 按照一些特殊的属性名称添加Pou Tool void AddPouToolsByPropertyName(POU* pPou); // 添加兼容的Pou变量到树形结构中 void AddPouVariablesToTree(const QString& strGroup); // 添加Tool子节点 QTreeWidgetItem* AddToolTreeItem(const QString& toolName); // 添加接口子节点 void AddInterfaceTreeItem(QTreeWidgetItem* pToolItem, const _INTERFACE* pInf); // 保存Button类型的选择信息 bool saveSelectionByButton(QTreeWidgetItem* pItem); // 保存其他类型的选择信息 bool saveSelectionByOther(QTreeWidgetItem* pItem); private slots: // select按钮 void onButtonSelectClicked(); // clear按钮 void onButtonClearClicked(); // Combo框选择变更时,需要切换对应的变量列表 void onComboGroupChanged(int nIndex); protected: VControlObject* m_pControlObject; DataLink m_DataLink; QString m_strPropertyName; QString m_strPropertyShortName; // 去掉后面数字后的属性名 // 保存属性字段和数值类型的对应关系,用于绑定 QMap m_propertiesNameToType; };