欢迎来到天天文库
浏览记录
ID:14554348
大小:429.50 KB
页数:9页
时间:2018-07-29
《mfc设计项目管理界面心得》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、我是背后那一束模糊的影子,只为衬托前面那个美丽……实现这个“简单”的管理系统其实不是那么简单!其中总结我所遇到的几个大问题:其一:对于一个界面型的管理系统,用我所熟悉的MFC实现,也不断的碰见控件操作和数据交换问题;其二:数据库操作,对于MFC的CRecordset类来说,还是需要研究一下才能加入这个系统的使用中来的;其三:生成项目报表,这就需要利用MFC来操作word,用MFC提供的库文件来形成word文档的报表;下面就来一一介绍我克服这几个问题的过程吧!第一个,控件操作与数据交换!首先给大家看一下该系统所
2、涉及的几个界面:登陆界面经营部管理主界面综合部、生产部、总工办管理主界面类似用户信息更改界面项目信息查询界面用户信息注册界面该系统流程大致是:经营部接到项目,填写项目信息和项目安排,交由下一级总工办;总工办登陆显示该项目信息,填写项目安排后交由下一级生产部;生产部登陆显示该项目信息,填写项目安排后交由下一级综合部;综合部登陆显示该项目信息,填写项目安排后提交下一级返回经营部,此项目完成整个流程。经营部再次登陆,可填写新项目信息和安排。每个部门都可以查看之前所有项目的信息。之前说的关于控件的操作问题主要就是由于
3、经营部、综合部、生产部、总工办的管理界面相似度很大,我不想做四个Dialog,所以就想着这四个部门共用一个对话框。还有就是不同的用户登陆,所属部门不同,对这个界面的操作权限就不同,如上图所示,还有经营部可以编辑项目信息和安排,而其他3个部门的用户就只能编辑安排那一部分,而已经发送下一级的项目,都变为不可编辑状态。我在资源里加入一个综合部样式的对话框,想到控件有可以隐藏和禁用的操作,所以这个控件的问题应该不算太难……但是这个所谓的不太难,难度还不太小。我用管理界面的对话框类ManagementMain生成对话框
4、:ManagementMaindlg;dlg.DoModal();这样的结果就是,我设计的对话框是怎样,它出来就是怎样……那要在哪里判断用户后做不同的显示呢?那我就给ManagementMain添加一个成员变量,intm_flg;然后再在构造函数里给它初始化m_flg=0;如果是经营部登陆,那么ManagementMaindlg;dlg.m_flg=1;//隐藏部分控件dlg.DoModal();然后在构造函数里判断做不同的显示:if(m_flg==1)//为经营部登陆,则隐藏归档要求那两个控件,否则禁用项目
5、信息的控件{m_CtrFileRequire.ShowWindow(false);m_CtrFilingRequire.ShowWindow(false);}else{GetDlgItem(IDC_ProjectNum)->EnableWindow(FALSE);GetDlgItem(IDC_ProjectName)->EnableWindow(FALSE);GetDlgItem(IDC_ProjectAddr)->EnableWindow(FALSE);GetDlgItem(IDC_ClientAddr)-
6、>EnableWindow(FALSE);GetDlgItem(IDC_ClientPerson)->EnableWindow(FALSE);GetDlgItem(IDC_ClientPhone)->EnableWindow(FALSE);GetDlgItem(IDC_ClientRequire)->EnableWindow(FALSE);}这里保存后编译链接没问题,运行执行文件登陆过后,就出现下图的运行错误:多次百度查找错误的原因,也没有弄明白个究竟,只知道不能在构造函数里对对话框控件进行操作,要初始化对话
7、框的布局,需要在virtualvoidDoDataExchange(CDataExchange*pDX);这个函数里进行改变。而且放在构造函数里的判断m_flg始终未0,这是由于构造函数先于dlg.m_flg=1;//隐藏部分控件这一句执行,构造里初始化为0,所以构造里判断过后m_flg才会被赋值为1。那么将上面改变控件的代码Ctrl+X,Ctrl+V到DoDataExchange()函数中,编译链接后运行登陆果然可以实现同一个对话框布局的不同显示了!控件操作的问题解决了,还有一个就是数据交换了。比如在经营部
8、登陆后,对话框一出来,就显示该用户信息,项目信息的编号处显示一个新生成的项目编号;综合部、生产部、总工办登陆后,对话框上就显示用户信息,显示上一级发过来的项目信息。这个问题应该可以不用再对话框上再加一个按钮,点击按钮过后才更新各对话框的信息,应该有另外的方法……我百度查了一下对话框的初始化相关的消息,也翻看以前一些写了界面的程序,偶然发现平时忽略的生成对话框的步骤ManagementMaindlg;
此文档下载收益归作者所有