分类: C/C++
2008-03-04 10:52:28
/****************
* *
* 网格实例 *
* *
****************/
#pragma once
#include "afxcmn.h"
#include "afxwin.h"
// CGridSampleDlg 对话框
class CGridSampleDlg : public CDialog
{
DECLARE_DYNAMIC(CGridSampleDlg)
public:
CGridSampleDlg(CWnd* pParent = NULL); // 标准构造函数
virtual ~CGridSampleDlg();
// 对话框数据
enum { IDD = IDD_DLG_GRIDSAMPLE };
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV 支持
DECLARE_MESSAGE_MAP()
public:
// 网格控件
CListCtrl m_ListCtl;
public:
// 初始化表头、列表内容
CButton m_btnInit;
public:
// 添加
CButton m_btnAdd;
public:
// 修改
CButton m_btnEdit;
public:
// 删除
CButton m_btnDel;
public:
// ID号
CEdit m_EditID;
public:
// StudentName
CEdit m_EditStudentName;
public:
// BirthDay
CEdit m_EditBirthDay;
public:
// Grade
CEdit m_EditGrade;
public:
afx_msg void OnBnClickedBtnInit();
public:
afx_msg void OnBnClickedBtnAdd();
public:
afx_msg void OnBnClickedBtnEdit();
public:
afx_msg void OnBnClickedBtnDel();
public:
virtual BOOL OnInitDialog() ;
public:
//网格列数
int m_ColNums ;
public:
//初始化网格样式
void SetGridStyle() ;
//清除行内容
void ClearRows() ;
//清除列内容
void ClearColumns() ;
//设置列
void SetColumns() ;
//设置列宽
void SetColumnsWidth() ;
//添加行
void InsertRow(CString ID,CString Name,CString Birth,CString Grade) ;
//修改行
void UpdateRow(CString ID,CString Name,CString Birth,CString Grade) ;
//删除行
void DeleteRow() ;
};
/////////////////////////////////////
// GridSampleDlg.cpp : 实现文件
//
#include "stdafx.h"
#include "MFC1.h"
#include "GridSampleDlg.h"
// CGridSampleDlg 对话框
IMPLEMENT_DYNAMIC(CGridSampleDlg, CDialog)
CGridSampleDlg::CGridSampleDlg(CWnd* pParent /*=NULL*/)
: CDialog(CGridSampleDlg::IDD, pParent)
{
m_ColNums = 4 ;
}
CGridSampleDlg::~CGridSampleDlg()
{
}
void CGridSampleDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST, m_ListCtl);
DDX_Control(pDX, IDC_BTN_INIT, m_btnInit);
DDX_Control(pDX, IDC_BTN_ADD, m_btnAdd);
DDX_Control(pDX, IDC_BTN_EDIT, m_btnEdit);
DDX_Control(pDX, IDC_BTN_DEL, m_btnDel);
DDX_Control(pDX, IDC_EDIT_ID, m_EditID);
DDX_Control(pDX, IDC_EDIT_STUDENTNAME, m_EditStudentName);
DDX_Control(pDX, IDC_EDIT_BIRTHDAY, m_EditBirthDay);
DDX_Control(pDX, IDC_EDIT_GRADE, m_EditGrade);
}
BEGIN_MESSAGE_MAP(CGridSampleDlg, CDialog)
ON_BN_CLICKED(IDC_BTN_INIT, &CGridSampleDlg::OnBnClickedBtnInit)
ON_BN_CLICKED(IDC_BTN_ADD, &CGridSampleDlg::OnBnClickedBtnAdd)
ON_BN_CLICKED(IDC_BTN_EDIT, &CGridSampleDlg::OnBnClickedBtnEdit)
ON_BN_CLICKED(IDC_BTN_DEL, &CGridSampleDlg::OnBnClickedBtnDel)
END_MESSAGE_MAP()
BOOL CGridSampleDlg::OnInitDialog()
{
CDialog::OnInitDialog() ;
SetGridStyle();
SetColumns() ;
SetColumnsWidth() ;
return true ;
}
// CGridSampleDlg 消息处理程序
void CGridSampleDlg::OnBnClickedBtnInit()
{
//// TODO: 在此添加控件通知处理程序代码
////设置样式
//// LVS_EX_CHECKBOXES 表示添加CheckBox
//// LVS_EX_FULLROWSELECT 表示选择整行
//// LVS_EX_GRIDLINES 表示添加表格线
//m_ListCtl.SetExtendedStyle(LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES) ;
////清除
//m_ListCtl.DeleteAllItems() ;
////添加列
//m_ListCtl.InsertColumn(0,"ID") ;
//m_ListCtl.InsertColumn(1,"Name") ;
//m_ListCtl.InsertColumn(2,"Birth") ;
//m_ListCtl.InsertColumn(3,"Grade") ;
////设置列宽
//m_ListCtl.SetColumnWidth(0,50) ;
//m_ListCtl.SetColumnWidth(1,100) ;
//m_ListCtl.SetColumnWidth(2,100) ;
//m_ListCtl.SetColumnWidth(3,50) ;
////添加行
//for(int i=0;i<20;i++){
// m_ListCtl.InsertItem(i,"ok") ;
// m_ListCtl.SetItemText(i,1,"e") ;
// m_ListCtl.SetItemText(i,2,"e") ;
// m_ListCtl.SetItemText(i,3,"e") ;
//}
//int n1 = m_ListCtl.GetItemCount() ; //获取行数
//int n2 = m_ListCtl.GetHeaderCtrl()->GetItemCount() ;
//CString s ;
//s.Format("%d,%d",n1,n2) ;
//MessageBox(s) ;
}
void CGridSampleDlg::OnBnClickedBtnAdd()
{
// TODO: 在此添加控件通知处理程序代码
CString ID("") ;
CString sName("") ;
CString sBirth("") ;
CString sGrade("") ;
m_EditID.GetWindowText(ID) ;
m_EditStudentName.GetWindowText(sName) ;
m_EditBirthDay.GetWindowText(sBirth) ;
m_EditGrade.GetWindowText(sGrade) ;
InsertRow(ID,sName,sBirth,sGrade) ;
}
void CGridSampleDlg::OnBnClickedBtnEdit()
{
// TODO: 在此添加控件通知处理程序代码
CString ID("") ;
CString sName("") ;
CString sBirth("") ;
CString sGrade("") ;
m_EditID.GetWindowText(ID) ;
m_EditStudentName.GetWindowText(sName) ;
m_EditBirthDay.GetWindowText(sBirth) ;
m_EditGrade.GetWindowText(sGrade) ;
UpdateRow(ID,sName,sBirth,sGrade) ;
}
void CGridSampleDlg::OnBnClickedBtnDel()
{
// TODO: 在此添加控件通知处理程序代码
DeleteRow() ;
}
//初始化网格样式
void CGridSampleDlg::SetGridStyle()
{
//设置样式
// LVS_EX_CHECKBOXES 表示添加CheckBox
// LVS_EX_FULLROWSELECT 表示选择整行
// LVS_EX_GRIDLINES 表示添加表格线
m_ListCtl.SetExtendedStyle(LVS_EX_CHECKBOXES|LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES) ;
}
//清除行内容
void CGridSampleDlg::ClearRows()
{
m_ListCtl.DeleteAllItems() ;
}
//清除列内容
void CGridSampleDlg::ClearColumns()
{
for(int i=m_ColNums-1;i>=0;i--)
m_ListCtl.DeleteColumn(i) ;
}
//设置列
void CGridSampleDlg::SetColumns()
{
//添加列
m_ListCtl.InsertColumn(0,"ID") ;
m_ListCtl.InsertColumn(1,"Name") ;
m_ListCtl.InsertColumn(2,"Birth") ;
m_ListCtl.InsertColumn(3,"Grade") ;
}
//设置列宽
void CGridSampleDlg::SetColumnsWidth()
{
//设置列宽
m_ListCtl.SetColumnWidth(0,50) ;
m_ListCtl.SetColumnWidth(1,100) ;
m_ListCtl.SetColumnWidth(2,100) ;
m_ListCtl.SetColumnWidth(3,50) ;
}
//添加行
void CGridSampleDlg::InsertRow(CString ID,CString Name,CString Birth,CString Grade)
{
int nRows = m_ListCtl.GetItemCount() ;
m_ListCtl.InsertItem(nRows,ID) ;
m_ListCtl.SetItemText(nRows,1,Name) ;
m_ListCtl.SetItemText(nRows,2,Birth) ;
m_ListCtl.SetItemText(nRows,3,Grade) ;
}
//修改行
void CGridSampleDlg::UpdateRow(CString ID,CString Name,CString Birth,CString Grade)
{
int nRows = m_ListCtl.GetItemCount() ;
for(int i=0;i
m_ListCtl.SetItemText(i,0,ID) ;
m_ListCtl.SetItemText(i,1,Name) ;
m_ListCtl.SetItemText(i,2,Birth) ;
m_ListCtl.SetItemText(i,3,Grade) ;
}
}
}
//删除行
void CGridSampleDlg::DeleteRow()
{
int nRows = m_ListCtl.GetItemCount() ;
for(int i=nRows-1;i>=0;i--){
if(m_ListCtl.GetCheck(i)){
m_ListCtl.DeleteItem(i) ;
}
}
}