Лабораторная работа №11. Работа с элементом управления "Окно списка" (ListBox) - Технология разработки программного обеспечения систем управления

Цель Работы - научиться использовать элемент управления ListBox а также основные методы класса СListBox. Использование возможности контроля правильности ввода исходных данных.

- Теоретические сведения

Класс CListBox

Класс CListBox обеспечивает функционирование окна списка. В окне списка могут отображаться различные элементы, которые пользователь может просматривать и выделять.

Окно списка имеет два режима выделения элементов:

    - единичный выбор, т. е. может быть выделен только один элемент списка; - множественный выбор, т. е. в списке одновременно могут быть выделены несколько элементов.

Окно списка может содержать как один столбец, так и несколько столбцов с элементами.

Основные Методы Данного Класса

Для добавления строки в список в классе CListBox объявлена функция:

Int AddString( LPCTSTR lpszItem );====07.02.03

Здесь параметр lpszItem - указатель на нуль - терминированную строку, добавляемую в список.

Функция возвращает номер строки в списке, перед которой добавлялся текст, причем первая строка имеет нулевой индекс.

Кроме того данный класс имеет такие методы как:

    - int GetCount() const; при успехе метод возвращает количество элементов в окне списка; - void SetColumn(int Wingth); метод устанавливает ширину всех колонок списка; - int GetCutSel(); метод возвращает индекс выделенного элемента списка; - int DeleteString(UINT n); метод удаляет строку с индексом n; - int InsertString(int n, LPCTSTR lpszItem); метод вставляет в указанное место n строку, если индекс n равен -1, то строка будет добавлена в конец списка.

Если в процессе работы функций возникла ошибка, то возвращается величина LB_ERR, если эта ошибка была связана с нехваткой памяти для хранения новой строки, то возвращается величина LB_ERRSPASE.

Для очистки всего списка объявлена функция:

Void ResetContent( );

Эта функция не получает и не возвращает параметры.

Пример Реализации Программы

Задание: Написать и отладить программу, которая выводит таблицу функций

Для х изменяющихся от Х1 до Х2 с шагом Н. Программа должна выглядеть как представлено на рисунке 1.

результат работы программы

Рисунок 1.- Результат работы программы

Для решения задачи необходимо проделать следующие действия:

    1) Создать при помощи MFCAppWizard(exe) новый проект (предварительно выбрав путь и имя) типа Dialog based. 2) Используя панель Controls, нанести на Dialog - 4 элемента типа Edit Box и Static Text (объединив их элементом Group Box), 2 - Buttons и 1 - ListBox для вывода результатов. Установить нужные свойства и надписи. 3) При помощи ClassWizard через закладку Member Variables связать поле Edit1 с переменной m_x1, выполнив команду ClassWizard/Member Variables, сделать щелчок на IDC_EDIT1, щелчок на Add Variable и в появившейся закладке в поле name: m_x1 тип: double и щелчок на OK, установить диапазон: Minimum Value: 0.1; Maximum Value: 0.3;

По аналогии связать:

Edit2 - с m_х2 тип: double, диапазон: 0.7 -0.9;

Edit3 - с m_h тип: double, диапазон: 0.1 -0.2;

Edit4 - с m_n тип: int, диапазон: 5 -20.

Элемент ListBox связать с m_l, назначив Category: Control, установив тем самым для данного объекта тип CListBox, т. е. для данного объекта можно вызывать методы по всей цепи иерархии данного класса MFC. Так для стирания окна вывода в обработчик щелчка на кнопке CLEAR можно вызвать следующий метод: m_l. ResetContent().

В обработчике щелчка на кнопке "RUN" введенные в класс диалога переменные m_х1, m_х2, m_h, m_n, при помощи циклических алгоритмов (внешний - по x а внутренний цикл - по параметру i для вычисления суммы для текущего аргумента) написать текст программы решения поставленной задачи.

Для вывода информации о разработчике и введенных исходных данных необходимо воспользоваться методом класса ListBox - AddString:

UpdateData(TRUE);

Str. Format("Разработка Иванова И. И");

M_l. AddString(str);

UpdateData(FALSE);

Str. Format("Исходные данные: x1=%.2lf, x2=%.2lf, h=%.2lf, n=%2d",

M_x1,m_x2,m_h, m_n);

M_l. AddString(str);

UpdateData(FALSE);

Участок вывода текущей строки таблицы в окно результатов может быть таким:

Str. Format("при x=%.2lf, Summa=%.2lf, точное значение=%.2lf",x, s,y);

M_l. AddString(str);

UpdateData(FALSE).

    4) Находясь в режиме конструктора диалога командой Layout/Tab Order, установить очередность перехода между элементами управления: 1 - Edit1; 2 - Edit2; 3 - Edit3; 4 - Edit4; 5 - Button RUN; 6 - ListBox; 7 - Button CLEAR; 8 - Button OK; 9 - Button Cancel, а для кнопки "RUN" установить свойство "Default". 5) Работа с программой:

Запустить проект и в появившемся диалоговом окне щелкнуть на "ОК"

окно подсказки

Рисунок 2. - Окно подсказки

Появится MessageBox с подсказкой о диапазоне вводимого х1 (рисунок 2):

Щелкнуть "ОК", введите начальное значение аргумента х (поле с подсветкой) и опять щелкнуть на "ОК". По аналогии ввести значения для x2, h, n. Для выполнения задания щелкнуть на "RUN". Щелчок на кнопке "CLEAR" стирает значения в окне вывода.

    - Варианты заданий 1. 2. 3. 4. 5. 7. 8. 9. 10. 11. 12. 13. 14. 15. - Контрольные вопросы 1. В чем заключается роль класса CListBox в MFC? 2. Назовите основные методы класса CListBox. 3. Перечислите основные этапы создания списка.

Похожие статьи




Лабораторная работа №11. Работа с элементом управления "Окно списка" (ListBox) - Технология разработки программного обеспечения систем управления

Предыдущая | Следующая