На этом шаге мы рассмотрим, как можно программно изменять некоторые свойства элементов управления.
На вкладке проекта ViewDB Вы увидите все классы, созданные в результате вставки элементов управления ADO Data Control и DataGrid Control. Нас интересуют классы CAdodc и CDataGrid, которые представляют сами элементы управления. Раскрыв их в ClassView, Вы увидите функции-члены, позволяющие получать сведения о свойствах элементов, а также изменять их. Имена этих функций получаются добавлением к названию параметра префикса Get (получить сведения) и Set (установить). В классах также есть функции-члены, инкапсулирующие предоставляемые элементами управления методы.
Сейчас мы научимся применять эти функции для настройки свойств элементов управления и вызова их методов. Вы добавите в список Order By два элемента, позволяющие пользователю отсортировать записи по фамилии автора или же по названию штата. При изменении порядка сортировки записи должны выводиться соответствующим образом, а заголовок элемента DataGrid Control должен отображать выбранный тип сортировки.
Идентификатор | Категория | Тип переменной | Имя переменной |
---|---|---|---|
IDC_ADODC1 | Элемент управления | CAdodc | m_adodc |
IDC_DATAGRID1 | Элемент управления | CDataGrid | m_datagrid |
IDC_ORDERLIST | Значение | CString | m_lbOrder |
IDC_ORDERLIST | Элемент управления | CListBox | m_strOrder |
Рис.1. Окно с добавленными переменными
m_strOrder.AddString("By last name"); m_strOrder.AddString("By state"); m_strOrder.SetCurSel(0); OnSelchangeOrderlist();
Он добавляет в список два элемента и выбирает первый из них. Теперь создадим функцию OnSelchangeOrderlist(), которая будет обрабатывать уведомления от элемента управления LBN_SELCHANGE, генерируемые при изменении пользователем выбранного в списке элемента.
if (m_strOrder.GetCurSel() == 0) { m_adodc.SetRecordSource("SELECT au_fname,au_lname,\ state FROM authors ORDER BY au_lname"); m_datagrid.SetCaption("Authors by name"); } else { m_adodc.SetRecordSource("SELECT au_fname,au_lname,\ state FROM authors ORDER BY state"); m_datagrid.SetCaption("Authors by state"); } m_adodc.Refresh();
Обратите внимание, как функции-члены классов CAdodc и CDataGrid применяются для задания свойств и вызова методов элементов ADO Data Control и DataGrid Control. Программа устанавливает свойство RecordSource в элементе ADO Data Control и свойство Caption - в DataGrid Control. Она также вызывает метод Refresh() элемента управления ADO Data Control.
Соберите и запустите приложение DBView. В списке Order By выберите другой элемент. Проверьте, правильно ли изменился заголовок элемента управления DataGrid Control и порядок записей.
Текст этого приложения можно взять здесь (81,3 Кб).
На следующем шаге мы вернемся к приложению STUpload.