Để thực hiện đồng bộ hai nội dung khi một trong hai hiện tượng nói trên xảy ra, ta sử dụng hành vi sau mà lớp CDialog kế thừa từ CWnd:
BOOL UpdateData( BOOL bSaveAndValidate = TRUE ); Tham số bSaveAndValidate có ý nghĩa như sau:
TRUE : Chuyển giá trị trong control vào biến giá trị. FALSE : Chuyển giá trị trong biến giá trị vào control. áSử dụng biến điều khiển:
Biến điều khiển là đối tượng thuộc một lớp đối tượng nhập liệu (xem chương 8) có kiểu phù hợp với control. Thông qua các hành vi của biến đối tượng này, ta có thể thực hiện các tác động cho phép lên control.
2 Thực hiện ứng dụng với giao diện chính là dialog, một mục nhập và hai nút View và Set để hiển thị và đặt nội dung trong hộp nhập.
Áp dụng mục (9.5.2), tạo dự án VD27A với giao diện chính là dialog. Mở resource của dialog giao diện chính, cài đặt các control sau:
- Hộp nhập liệu : Edit Số hiệu IDC_NHAP - Nút lệnh hiển thị nội dung hộp nhập : Button IDC_XEM
- Nút lệnh đặt nội dung hộp nhập : Button IDC_DAT Khai báo biến m_szNhap kiểu CString, dùng lưu giá trị hộp nhập liệu.
Cách thực hiện như sau:
Hộp hội thoại 111
• Chọn trang Member Variables, chọn mục có số hiệu IDC_NHAP. Sau đó chọn mục Add Variable….
- Meber variable name = m_szNhap : Tên biến - Category = Value : Loại biến
- Variable type = CString : Kiểu của biến. Chọn OK. Khai báo biến m_editNhap kiểu CEdit. Biến này được sử dụng để tác
động giá trị hộp nhập liệu. Thực hiện như khai báo biến m_szNhap:
Hành vi OnXem ứng với nút chọn IDC_XEM hiển thị nội dung nhập: void CEmpDlg::OnXem()
{
UpdateData(TRUE); // Cập nhật giá trị control vào biến MessageBox( m_szNhap, "Ban da nhap", MB_OK ); }
Hành vi OnDat ứng với nút chọn IDC_XEM đặt giá trị cho hộp nhập:
112 Lập trình Windows với MFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.comvoid CEmpDlg::OnDat() void CEmpDlg::OnDat()
{
m_editNhap.SetWindowText( "Mr.Emp, Hello !" ); }
Biên dịch và chạy thử ứng dụng. ) Hành vi OnDat có thể cài đặt như sau:
void CEmpDlg::OnDat() {
m_szNhap = "Mr.Emp, Hello !";
UpdateData(FALSE); // Cập nhật giá trị biến cho control }
9.7 KHAI THÁC CÁC TIỆN ÍCH HỖ TRỢ:
Ứng dụng phát triển trong VC có thể dễ dàng khai thác các tiện ích hỗ trợ bởi VC (VC Components) hoặc bởi các ứng dụng khác được cài đặt trong hệ thống (ActiveX Controls). Việc bổ sung và khai thác các tiện ích này trong ứng dụng được thực hiện thông qua các bước sau:
Mở dự án của ứng dụng trong VC. Đăng ký sử dụng tiện ích:
Chọn mục: Project / Add to Project / Components and Controls…
Hộp hội thoại 113
(Danh sách các tiện ích của MS Visual C++)
• Chọn tiện ích:
Chọn mục thích hợp trong danh sách tiện ích chi tiết. Chọn Insert.
Chọn OK để khẳng định thao tác.
• Khai báo thông tin lớp đối tượng quản lý tiện ích bổ sung (nếu có).
• Khai báo thông tin lớp đối tượng trong ứng dụng sử dụng tiện ích. Kết thúc quá trình bổ sung một tiện ích vào ứng dụng.
114 Lập trình Windows với MFC - Microsoft Visual C++ 6.0 - Lê Ngọc Thạnh - lntmail@yahoo.com2 Thực hiện ứng dụng TipApp với giao diện chính là dialog. Mỗi khi thực 2 Thực hiện ứng dụng TipApp với giao diện chính là dialog. Mỗi khi thực
hiện, ứng dụng hiển thị hộp thông báo "Tip of the Day".
Dùng MFC Wizard tạo dự án TipApp với giao diện chính là dialog. Đăng ký sử dụng tiện ích:
• Nhóm tiện ích = Visual C++ Components.
• Tiện ích = Tip of the day
• Khai báo thông tin lớp đối tượng quản lý tiện ích:
Chọn OK, Chọn Close để đóng hộp hội thoại tiện ích.
• Với tiện ích "Tip of the Day", lớp đối tượng quản lý tiểu trình chính của ứng dụng là lớp sử dụng. Hai hành vi bổ sung tự động cho lớp: - void CTipAppApp::ShowTipAtStartup(void);
- void CTipAppApp::ShowTipOfTheDay(void);
Hành vi ShowTipAtStartup được thực hiện bởi hành vi InitInstance. ) Hãy thử quan sát các lớp của dự án TipApp để tự nhận xét. Biên dịch và chạy thử ứng dụng.
2 Thực hiện ứng dụng XemLich với giao diện chính là dialog. Bổ sung vào ứng dụng công cụ xem và chọn lịch Calendar 8 (ActiveX Control). Cài đặt control này lên dialog giao diện.
Dùng MFC Wizard tạo dự án XemLich với dialog giao diện chính. Đăng ký sử dụng tiện ích:
• Nhóm tiện ích = Registered ActiveX Controls.
Hộp hội thoại 115
• Khai báo thông tin lớp đối tượng quản lý tiện ích:
Chọn OK, Chọn Close để đóng hộp hội thoại tiện ích.
• Lớp đối tượng CXemLichDlg quản lý dialog giao diện chính của dự án làm nhiệm vụ sử dụng control bổ sung này:
- Mở resource dialog giao diện, cài đặt control sau:
- Hộp xem và chọn ngày CCalendar IDC_DATE - Tạo biến điều khiển m_Lich kiểu CCalendar cho control.
- Hành vi OnInitDialog của lớp đặt giá trị cho control: BOOL CXemLichDlg::OnInitDialog()
{ CDialog::OnInitDialog(); SetIcon(m_hIcon, TRUE); SetIcon(m_hIcon, FALSE); m_Lich.SetDay( 19 ); m_Lich.SetMonth( 11 ); m_Lich.SetYear( 2002 ); return TRUE; }
Có thể sử dụng các hành vi: GetDay, GetMonth, GetYear của đối tượng m_List để lấy thông tin về ngày được chọn.
Biên dịch và chạy thử ứng dụng.