3. Dự án (Project ) DPW 2 )-
4.9. Hộp danh sách-List Box (CListBox)
Giới thiệu-
Introduction - Là hộp liệt kê theo hàng danh sách các giá trị được có sẵn. Có lúc người dùng cần gõ thêm vào các giá trị riêng mà nó chưa được đưa vào hộp danh sách.
Thiết kế-Design Tạo-Create
Thiết kế- Design
- Click chọn nút List Box trên thanh công cụ Điều khiển.
- Khi đó biểu tượng con trỏ chuột là > Click chọn trên Hộp thoại-Dialog để có hộp danh sách là .
Mã-Code
Gán Thuộc tính- Assign Properties
Vẽ-Draw
- Click chuột phải lên hộp danh sách trên Hộp thoại-Dialog > chọn Properties. - Sau đó xuất hiện hộp thoại List BoxProperties của hộp danh sách như hình sau:
+ Nhập tên định danh của hộp danh sách ở hộp . VD: IDC_LIST_HOTEN. + Bỏ chọn hộp nếu muốn ẩn hộp danh sách.
+ Chọn hộp nếu muốn vô hiệu hóa hộp danh sách. - Chọn thẻ > xuất hiện hộp thoại List Box Properties như hình sau:
+ Chọn hộp để chọn kiểu hộp danh sách. Các kiểu như sau:
Kiểu Ý nghĩa
Single - Chỉ có nhiều nhất một phần tử được chọn.
Multiple - Nhiều phần tử có thể cùng được lựa chọn. Việc lựa chọn được thực hiện bằng chuột kết hợp với phím Shift và Ctrl. Extended - Nhiều phần tử có thể cùng được lựa chọn. Việc lựa chọn được thực hiện bằng chuột kết hợp với kéo rê và nhấn nút trái của chuột. None - Không có phần tử nào có thể được lựa chọn.
- Rồi ấn phím Enter.
- Ấn phím ESC để hủy bỏ gán thuộc tính.
Viết mã- Coding
Lập trình-Progarmming Khai báo biến-
Variable Declaration - Click chuột phải lên hộp danh sách trên Hộp thoại-Dialog > chọn ClassWizard.
- Chọn tên định danh của hộp danh sách ở khung Control IDs > chọn nút > xuất hiện hộp thoại Add Member Variable như hình sau:
+ Nhập tên biến hay tên đối tượng vào hộp . VD:
m_list_sothich.
+ Nếu chọn là biến ở hộp , thì chọn kiểu dữ liệu ở hộp .
Kiểu Giải nghĩa
CString Kiểu Chuỗi
+ Nếu chọn là đối tượng ở hộp , thì chọn lớp ở hộp .
Kiểu Giải nghĩa
CListBox Lớp hộp danh sách
- Chọn nút để xóa biến hay xóa đối tượng.
Chèn Thông điệp-
- Chọn tên định danh của hộp danh sách ở khung Object IDs > chọn thông điệp ở khung
Messages:
Thông điệp Ý nghĩa sự kiện
LBN_SELCHANGE LBN_DBLCLK Nhấp đúp chuột LBN_ERRSPACE LBN_KILLFOCUS LBN_SELCANCEL LBN_SETFOCUS
- Chọn nút > sau đó xuất hiện hộp thoại Add Member Fucntion như hình sau:
+ Đặt tên hàm cho hộp nhập liệu ở hộp . Các trường hợp đặt tên hàm:
Thông điệp Tên hàm Ví dụ
LBN_DBLCLK OnDblclkList OnDblclkLstHoTen - Chọn nút để xóa hàm.
- Chọn nút để viết mã lệnh trong hàm như sau: void CTen_Ung_DungDlg::OnDblclkLstHoTen()
{
// TODO: Add your control notification handler code here }
Viết mã-Coding Lập trình-
Progarmming - Hàm int AddString(AddString(): Thêm một phần tử vào ListBox. LPCTSTR lpszItem
);
- Hàm InsertString(): Chèn một phần tử vào ListBox tại vị trí nIndex. int InsertString( int nIndex, LPCTSTR lpszItem ); - Ví dụ-Example: UpdateData(TRUE); m_list.AddString(m_edit); m_edit=""; UpdateData(FALSE); CEdit* pEdit=(CEdit*)GetDlgItem(IDC_EDIT1); pEdit->SetFocus(); UpdateData(TRUE); m_ds1.AddString(m_dulieu);
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1); pEdit->SetFocus();
UpdateData(FALSE);
- Hàm GetCurSel(): Trả về chỉ số của phần tử đang được lựa chọn trên ListBox. Hàm chỉ nên sử dụng trong trường Single Selection.
int GetCurSel( ) const;
- Hàm SetCurSel(): Dùng để lựa chọn một phần tử trong ListBox. Hàm chỉ nên sử dụng trong trường Single Selection.
int SetCurSel( int nSelect
);
- Hàm GetSel(): Trả về trạng thái lựa chọn của một phần tử trong ListBox. int GetSel(
int nIndex
) const; >0 là lựa chọn #0 là không lựa chọn
- Hàm SetSel(): Dùng để lựa chọn hay hủylựa chọn một phần tử trong ListBox. Hàm chỉ nên sử dụng trong trường Multiple Selection.
int SetSel( int nIndex,
BOOL bSelect = TRUE );
Nếu bSelect = TRUE thì lựa chọn
Nếu bSelect = FALSE thì không lựa chọn
- Hàm GetText(): Trả về một chuỗi đang được lựa chọn trên ListBox. int GetText( int nIndex, LPTSTR lpszBuffer ) const; void GetText( int nIndex, CString& rString ) const; - Ví dụ-Example: int index; CString s; index=m_list.GetCurSel(); m_list.GetText(index,s); MessageBox(s);
- Hàm DeleteString (): Xoá phần tử tại vị trí nIndex của ListBox. int DeleteString(
UINT nIndex
);
- Hàm ResetContent (): Xoá tất cả các phần tử có trong ListBox. void ResetContent( ); - Ví dụ-Example: int index; CString tmp; index = m_ds1.GetCurSel(); m_ds1.GetText(index, tmp); m_ds1.DeleteString(index); m_ds2.AddString(tmp);
- Hàm GetCount(): Trả về số phần tử có trong ListBox. int GetCount( ) const;
- Hàm GetSelCount(): Trả về tổng số phần tử đang được lựa chọn trong ListBox. Hàm chỉ nên sử dụng trong trường Multiple Selection.
int GetSelCount( ) const; - Ví dụ-Example:
CString tmp;
for(int i = 0; i < m_ds2.GetCount();i++) {
if(m_ds2.GetSel(i) > 0) { m_ds2.GetText(i, tmp); m_ds2.DeleteString(i); m_ds1.AddString(tmp); } }