1、对话框中的列表视图控件
在写一些数据库程序的时候经常会用到网格报表类型的列表视图控件。这个控件对于对话框程序来说和使用其它控件并没有多大区别。首先将其View属性设置为Report类型;然后为其关联一个CListCtrl控件类型的成员变量;最后在初始化对话框函数中设置其扩展类型为网格类型,并为其添加列。
但是,对于一个具有一定灵活性的程序来说,往往最初的列表视图控件列并不是一成不变的。我们通常将其封装到不同的函数中,在不同的命令下调用不同的布局函数,然后以不同的列表视图来呈现数据。例如,用户单击“患者信息”的时候,列表视图要以对应患者信息的列来呈现数据;当用户单击“诊疗信息”的时候,列表视图要以对应诊疗信息的列来呈现最近的诊疗情况。
上面两个操作是在一个程序界面下完成的。这就遇到了一个问题:每当我们在列表视图中切换布局的时候,原先已有的列应该怎样处理?查看MSDN中CListCtrl的成员,可以找到CListCtrl::DeleteColumn()成员函数。在该函数下面的Example中,MSDN提供了一个删除所有列的代码。该代码如下所示。
int nColumnCount = m_myListCtrl.GetHeaderCtrl()->GetItemCount();
// Delete all of the columns.
for (int i=0; i < nColumnCount; i++)
{
m_myListCtrl.DeleteColumn(0);
}
该代码是显而易见的,首先得到列表视图的列数,然后循