在大多数软件中,都具有菜单、工具栏、按钮或树形功能选择。同样的一个功能模板,有可能在菜单中调用它,在工具栏中也调用它,或者用其它方式调用它,即存在着多次调用的问题。
在一次有意无意的探索中,我找到了一个非常方便的功能调用方法,使用了这种方法之后几乎可以说成是“一行代码”控制主界面的所有功能调用。
然而,如何实现呢,请听我慢慢道来。
以我探索时所用的程序为例:所有的功能操作全部集成在主窗体里面,各模板全部以Tframe(即框架)的形式提供,功能调用即包括菜单调用,工具栏调用,也有树形功能树调用。
实现方法:
一、首先定义好几个数组,以方便构造功能树所用:
private: // User declarations
TTreeNode *m_CurrentNode; // 当前节点
TTreeNode *mTree[MAXNODE]; // 节点指针
int mTreeNo[MAXNODE]; // 结点ID
int mTreePNo[MAXNODE]; // 父结点ID
AnsiString mTreeName[MAXNODE]; // 结点名称
TFrame *ChildFrame[MAXNODE]; // Tframe 子模块
二、定义一个构造功能树的函数
public: // User declarations
void CreateTree();
三、功能树的构造
void TfrmMain::CreateTree()
{
mTreeName[0]=\"公司基本信息\"; mTreePNo[0]=MAXNODE;
mTreeName[1]=\"部门设置\"; mTreePNo[1]=0; ChildFrame[1]=new TfraDepartment(plFrame);
mTreeName[2]=\"职位设置\"; mTreePNo[2]=0; ChildFrame[2]=new TfraPosition(plFrame);
mTreeName[3]=\"员工信息\"; mTreePNo[3]=0; ChildFrame[3]=new TfraEmployee(plFrame);
mTreeName[4]=\"节假日设置\"; mTreePNo[4]=0; ChildFrame[4]=new TfraHoliday(plFrame);
mTreeName[5]=\"排班设置\"; mTreePNo[5]=0; ChildFrame[5]=new TfraDeployClass(plFrame);
mTreeName[6]=\"考勤管理\"; mTreePNo[6]=MAXNODE;
mTreeName[7]=\"数据导入\"; mTreePNo[7]=6; ChildFrame[7]=new TfraImportData(plFrame);