SỬ DỤNG LIST CONTROL
Trương Thị Mỹ Trang
Khoa Công nghệ Thông tin, trường Đại học Khoa học Tự nhiên TP.HCM
ttmtrang@fit.hcmuns.edu.vn
Phiên bản cập nhật ngày 16/11/2004
I. Mục tiêu
Hướng dẫn sửdụng List Control
II. Nội dung
Viết chương trình hiển thị danh sách sinh viên
III. Hướng dẫn
♦ Tạo một project mới có tên UseListCtrl dạng Dialog Based
♦ Tạo một Dialog theo mẫu sau:
IDC_Code
IDC_Name
IDC_Bithday
IDC_IsMale
IDC_Addr
IDC_StdList
Lưu ý: Trong properties của List Control, chọn Styles là Report
♦ Khai báo biến cho các control như sau:
♦ Khai báo các sự kiện BN_CLICKED cho các button IDC_IsMale, IDC_Add,
IDC_Refresh, IDC_Exit
♦ Để tạo một table, chúng ta thêm hàm CreateTable() vào lớp CUseListCtrlDlg:
void CUseListCtrlDlg::CreateTable()
{
// Định dạng Style cho List Control
m_StdList.SetExtendedStyle(LVS_EX_TRACKSELECT |
LVS_EX_ONECLICKACTIVATE |
LVS_EX_UNDERLINEHOT |
LVS_EX_FULLROWSELECT |
LVS_EX_GRIDLINES );
// Chèn thêm cột MSSV với độ rộng cột là 50
InsertColumn(0,"MSSV",50);
// Chèn cột Họ Tên với độ rộng là 150
InsertColumn(1,"Ho ten",150);
InsertColumn(2,"Ngay sinh",60);
InsertColumn(3,"Gioi tinh",50);
InsertColumn(4,"Dia chi",150);
}
Trong đó, hàm InsertColumn(…), như sau:
void CUseListCtrlDlg::InsertColumn(int iCol, CString Header, int Width)
// iCol: chỉ số của cột; Header: tên của cột; Width: độ rộng cột
{
LV_COLUMN lv;
lv.mask = LVCF_FMT | LVCF_TEXT | LVCF_WIDTH ;
lv.fmt = LVCFMT_LEFT;
lv.cx = Width;
lv.pszText = (char *) (const char *)Header;
m_StdList.InsertColumn(iCol,&lv);
}
♦ Chúng ta gọi hàm CreateTable() trong hàm OnInitDialog() của lớp
CUseListCtrlDlg, trong hàm này chúng ta them đoạn code sau.
BOOL CUseListCtrlDlg::OnInitDialog()
{
……….
// TODO: Add extra initialization here
CreateTable();
UpdateData(0);
………
}
♦ Để chèn một record vào bảng, chúng ta sửdụng hàm sau:
void CUseListCtrlDlg::InsertStudent(CString Code, CString Name,
COleDateTime Birthday, BOOL IsMale, CString Addr)
{
static unsigned int index = 0;
CString Temp;
// Chèn thêm một record ở dòng thứ index
m_StdList.InsertItem(index,Code);
// Ghi dữ liệu vào cột thứ 0 với nội dung trong biến Code ở dòng thứ index
m_StdList.SetItemText(index,0,Code);
m_StdList.SetItemText(index,1,Name);
Temp.Format("%d/%d/%d",Birthday.GetDay(),Birthday.GetMonth(),Birth
day.GetYear());
m_StdList.SetItemText(index,2,Temp);
Temp = (IsMale==0)?"Nam":"Nu";
m_StdList.SetItemText(index,3,Temp);
m_StdList.SetItemText(index,4,Addr);
index++;
}
♦ Trong hàm OnAdd(), ta thêm đoạn code sau:
void CUseListCtrlDlg::OnAdd()
{
// Cập nhật nội dung trên form vào các biến
UpdateData();
// Chèn thông tin về sinh viên
InsertStudent(m_Code,m_Name,m_Birthday,m_IsMale,m_Addr);
UpdateData(0);
}
.
Hướng dẫn sử dụng List Control
II. Nội dung
Viết chương trình hiển thị danh sách sinh viên
III. Hướng dẫn
♦ Tạo một project mới có tên UseListCtrl dạng. UpdateData(0);
………
}
♦ Để chèn một record vào bảng, chúng ta sử dụng hàm sau:
void CUseListCtrlDlg::InsertStudent(CString Code, CString Name,
COleDateTime