S DNG LIST CONTROL
Trương Th M Trang
Khoa Công ngh Thông tin, trường Đại hc Khoa hc T nhiên TP.HCM
ttmtrang@fit.hcmuns.edu.vn
Phiên bn cp nht ngày 16/11/2004
I. Mc tiêu
Hướng dn s dng List Control
II. Ni dung
Viết chương trình hin th danh sách sinh viên
III. Hướng dn
To mt project mi có tên UseListCtrl dng Dialog Based
To mt Dialog theo mu sau:
IDC_Code
IDC_Name
IDC_Bithday IDC_IsMale
IDC_Addr
IDC_StdList
Lưu ý: Trong properties ca List Control, chn Styles là Report
Khai báo biến cho các control như sau:
Khai báo các s kin BN_CLICKED cho các button IDC_IsMale, IDC_Add,
IDC_Refresh, IDC_Exit
Để to mt table, chúng ta thêm hàm CreateTable() vào lp CUseListCtrlDlg:
void CUseListCtrlDlg::CreateTable()
{
// Định dng 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 ct MSSV vi độ rng ct là 50
InsertColumn(0,"MSSV",50);
// Chèn ct H Tên vi độ rng 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 ca ct; Header: tên ca ct; Width: độ rng ct
{
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 gi hàm CreateTable() trong hàm OnInitDialog() ca lp
CUseListCtrlDlg, trong hàm này chúng ta them đon code sau.
BOOL CUseListCtrlDlg::OnInitDialog()
{
……….
// TODO: Add extra initialization here
CreateTable();
UpdateData(0);
………
}
Để chèn mt record vào bng, chúng ta s dng 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 mt record dòng th index
m_StdList.InsertItem(index,Code);
// Ghi d liu vào ct th 0 vi ni 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 đon code sau:
void CUseListCtrlDlg::OnAdd()
{
// Cp nht ni 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);
}