Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3298910
  • 博文数量: 754
  • 博客积分: 10132
  • 博客等级: 上将
  • 技术积分: 7780
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-14 23:36
文章分类

全部博文(754)

文章存档

2012年(3)

2011年(39)

2010年(66)

2009年(167)

2008年(479)

我的朋友

分类: 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  if(m_ListCtl.GetCheck(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) ;
  }
 }
}

阅读(4537) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~