Настройка элементов управления из кода приложения

   
На этом шаге мы рассмотрим, как можно программно изменять некоторые свойства элементов управления.

   
На вкладке проекта ViewDB Вы увидите все классы, созданные в результате вставки элементов управления
ADO Data Control и DataGrid Control. Нас интересуют классы CAdodc и CDataGrid, которые
представляют сами элементы управления. Раскрыв их в ClassView, Вы увидите функции-члены, позволяющие
получать сведения о свойствах элементов, а также изменять их. Имена этих функций получаются добавлением к
названию параметра префикса Get (получить сведения) и Set (установить).
В классах также есть функции-члены, инкапсулирующие предоставляемые элементами управления методы.

   
Сейчас мы научимся применять эти функции для настройки свойств элементов управления и вызова их методов.
Вы добавите в список Order By два элемента, позволяющие пользователю отсортировать записи по фамилии
автора или же по названию штата. При изменении порядка сортировки записи должны выводиться соответствующим
образом, а заголовок элемента DataGrid Control должен отображать выбранный тип сортировки.

  • Добавление новых переменных-членов для элементов управления.
  • Откройте ClassWizard и щелкните вкладку Member Variables.
  • Выберите класс CViewDBDialog и добавьте переменные-члены, приведенные в таблице 1.
    Таблица 1. Переменные-члены CViewDBDialog

    ИдентификаторКатегорияТип переменнойИмя переменной
    IDC_ADODC1Элемент управленияCAdodcm_adodc
    IDC_DATAGRID1Элемент управленияCDataGridm_datagrid
    IDC_ORDERLISTЗначениеCStringm_lbOrder
    IDC_ORDERLISTЭлемент управленияCListBoxm_strOrder


    Рис.1. Окно с добавленными переменными

  • Щелкните OK, чтобы закрыть ClassWizard и сохранить изменения.
  • Добавление элементов в раскрывающийся список Order By.
  • Найдите функцию CViewDBDlg::OnInitDialog(). В конце ее тела непосредственно перед оператором
    return добавьте следующий код:

        m_strOrder.AddString("By last name"); 
        m_strOrder.AddString("By state"); 
        m_strOrder.SetCurSel(0); 
        OnSelchangeOrderlist();
    

       
    Он добавляет в список два элемента и выбирает первый из них. Теперь создадим функцию OnSelchangeOrderlist(), которая будет
    обрабатывать уведомления от элемента управления LBN_SELCHANGE,
    генерируемые при изменении пользователем выбранного в списке элемента.

  • Создание функции OnSelchangeOrderlist().
  • Откройте Class Wizard и щелкните вкладку Message Maps.
  • Выберите класс CViewDBDlg. Выберите идентификатор объекта IDC_ORDERLIST.
  • Выберите сообщение LBN_SELCHANGE. Щелкните Add Function и задайте имя функции
    OnSelchangeOrderlist.
  • Щелкните Edit Code, чтобы отредактировать функцию. Замените строку с комментарием //ТОDO следующим кодом:
    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.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий