10.5.4 系统框架界面的实现(2)
上述代码实现了Tab控件的设计,包含设置标题、关联对话框、设置窗口大小、对话框指针赋值、显示初始窗口5个部分。该控件初始显示的是用户收支详细界面。
下面介绍用户收支详细界面初始化设置实现过程。
通过类向导给该对话框添加初始化WM_INITDIALOG消息,给列表控件添加"control"型变量m_list,需要对列表控件属性进行设置。设置属性"View"改为"Report",界面如图10-22所示。值得注意的是和Tab控件相关联的对话框属性必须进行设置。最终对话框属性设置如图10-23所示。
|
| (点击查看大图)图10-22 列表控件风格设置界面 |
|
| (点击查看大图)图10-23 Tab控件关联对话框风格设置界面 |
该对话框界面的初始化函数OnInitDialog()中代码参考如下:
代码位置:见光盘中本章源代码的PAGE1类。
- 1 BOOL PAGE1::OnInitDialog()
- 2 {
- 3 CDialog::OnInitDialog();
- 4 pdb=new CDatabase;
//数据库指针初始化 - 5 mySet=new LCSet(pdb);
//记录集初始化 - 6 mySet->Open();
//打开数据表 - 7 m_list.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);
//设置列表控件格式 - 8 m_list.InsertColumn(0,"编号",LVCFMT_CENTER,40);
//添加列表列名编号 - 9 m_list.InsertColumn(1,"记录时间",LVCFMT_CENTER,145);
//添加列名记录时间 - 10 m_list.InsertColumn(2,"收入类型",LVCFMT_CENTER,120);
//添加列名收入类型 - 11 m_list.InsertColumn(3,"收入数目(元)",LVCFMT_CENTER,100);
//添加列名收入数目(元) - 12 m_list.InsertColumn(4,"消费类型",LVCFMT_CENTER,120);
//添加列名消费类型 - 13 m_list.InsertColumn(5,"消费数目(元)",LVCFMT_CENTER,100);
//添加列名消费数目(元) - 14 m_list.InsertColumn(6,"备注信息",LVCFMT_CENTER,150);
//添加列名备注信息 - 15 LOADDATA();
//在列表中显示数据 - 16 if(!loginflag)
//非管理员权限 - 17 {
- 18 m_ADD.EnableWindow(FALSE);
//禁用【添加】按钮 - 19 m_DELE.EnableWindow(FALSE);
//禁用【删除】按钮 - 20 m_MODIFY.EnableWindow(FALSE);
//禁用【修改】按钮 - 21 m_look.EnableWindow(FALSE);
//禁用【报表】按钮 - 22 m_FIND.EnableWindow(FALSE);
//禁用【查找】按钮 - 23 m_PRINT.EnableWindow(FALSE);
//禁用【打印】按钮 - 24 }
- 25 return TRUE;
- 26 }
第4~6行代码实现了数据库指针初始化、记录集初始化并打开数据表。
第7~14行代码实现了列表控件属性设置并给控件添加列标题。
第15行代码实现了读取数据表中数据并在列表中显示,通过LOADDATA()函数封装。该函数具体实现代码将在下面详细介绍。
第16~24行代码实现了非管理员登录时操作按钮禁用。
注意:列表控件常用函数功能说明如下:SetExtendedStyle()设置扩展风格,设置列标题使用InsertColumn()函数,数据插入用InsertItem()函数,获取数据用GetItemText()函数。
由于对数据表操作比较频繁,故把显示数据的代码用自定义函数封装,这样不仅简化代码,也给维护带来了方便。下面介绍LOADDATA()函数中的具体实现代码。
- 1 void PAGE1::LOADDATA()
- 2 {
- 3 mySet->Requery();
//重新打开记录集 - 4 m_list.DeleteAllItems();
//列表数据清空 - 5 int i=0;
- 6 while(!mySet->IsEOF())
//如果记录没到最后 - 7 {
- 8 CString str,str1,str2;
- 9 str.Format("%d",mySet->m_id);
//数据格式转换 - 10 str1.Format("%d",mySet->m_incomnum);
//数据格式转换 - 11 str2.Format("%d",mySet->m_costnum);
//数据格式转换 - 12 m_list.InsertItem(i,str);
//插入数据项 - 13 m_list.SetItemText(i,1,mySet->m_time);
//插入时间 - 14 m_list.SetItemText(i,2,mySet->m_incomtype);
//插入收入类型 - 15 m_list.SetItemText(i,3,str1);
//插入收入数量 - 16 m_list.SetItemText(i,4,mySet->m_costtype);
//插入消费类型 - 17 m_list.SetItemText(i,5,str2);
//插入消费数量 - 18 m_list.SetItemText(i,6,mySet->m_about);
//插入备注 - 19 i++;
- 20 mySet->MoveNext();
//记录后移 - 21 }
- 22 }
第3行代码实现了通过按构造SQL语句方式,重新打开记录集。
第6~21行代码实现了遍历记录集读取数据并插入到列表控件中。其中9、10、11行实现了数据格式从整型到字符串格式的转换。
关于列表控件的使用方法前面已经介绍了,这里提醒读者注意插入数据的格式,如果不是字符串格式,首先需要通过Format()函数进行格式转换,再插入到列表控件中。
【责任编辑:
云霞 TEL:(010)68476606】