Лабораторная работа №4. Работа с элементом управления «Окно списка» (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( );

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

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

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

Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

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

 
  Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

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

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)Работа с программой:

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

 
  Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

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

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

Индивидуальные задания:

1. Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

2. Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

3. Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

4. Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

5. Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

7. Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

8. Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

9. Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

10. Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

11. Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

12. Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

13. Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

14. Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

15. Лабораторная работа №4. Работа с элементом управления «Окно списка» (ListBox) - student2.ru

Контрольные вопросы:

1. В чем заключается роль класса CListBox в MFC?

2. Назовите основные методы класса CListBox.

3. Перечислите основные этапы создания списка.


Наши рекомендации