24/05/2018, 14:14

Sử dụng List Control

0 Viết chương trình hiển thị danh sách sinh viê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: ...

0

Viết chương trình hiển thị danh sách sinh viê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:

    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_COLUMNlv;
        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:
    voidCUseListCtrlDlg::InsertStudent(CStringCode,CStringName, 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);
        }
        
0