Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Высокоуровневые методы информатики и программир...docx
Скачиваний:
25
Добавлен:
12.11.2019
Размер:
6.53 Mб
Скачать
  1. 7.3. Списки

Продолжим формирование предыдущего примера.

  1. Разместим элементы List Box (IDC_LIST1), Edit Box (IDC_EDIT3), Button (IDC_Add, Добавить), Button (IDC_Delete, Добавить) и надписи (Static Text) Список, Элемент спис­ка (рис. 7.2.1).

  2. Назначим переменные m_edit3 (для элемента IDC_EDIT3), m_list1 (категории Control для элемента IDC_LIST1).

  3. Добавим функции OnAdd и OnDelete формирования сообщений BN_CLICKED (обработки щелчков мышки) для кнопок Добавить и Удалить и функцию OnDblclkList1 (обработка двойных щелчков мышки на поле со списком) формирования сообщения LBN_DBLCLK для IDC_LIST1.

  4. Нажмем кнопку Edit Code и откорректируем.

Void cPrimDlg::OnAdd() //обработка кнопки “Добавить”

{ UpdateData(); m_list1.AddString(m_edit3) //добавить строку в список

}

Void cPrimDlg::OnDelete()//обработка кнопки “Удалить”

{ if (m_list1.GetCurSel()!=LB_ERR) //проверка выделенной строки в списке

m_list1.DeleteString(m_list1.GetCurSel()); //удалить выделенную строку

UpdateData(); //обновить объекты формы

}

Void cPrimDlg::OnDblclkList1() //обработка двойного щелчка по списку

{ if (m_list1.GetCurSel()!=LB_ERR) //проверка выделенной строки в списке

{ CString r; //объявление строковой переменной

m_list1.GetText(m_list1.GetCurSel(),r); //r=выделенная строка списка

SetDlgItemText(IDC_EDIT3, r); //значение r помещается в поле EDIT3

}

}

  1. Сохраним проект и нажмем кнопку выполнения Execute Program.

7.4. Линейные регуляторы и индикаторы

Продолжим формирование предыдущего примера.

  1. Разместим элементы Progress (IDC_PROGRESS1); Slider (IDC_SLIDER1) со свойствами Tick marks (вывод меток), Auto ticks (автоматический вывод меток), Client edga (вывод рамки); CheckBox (IDC_CHECK2, Caption=Сброс) (рис. 7.2.1).

  2. Назначим переменные m_progress1 (категории Control для элемента IDC_PROGRESS1), m_check2 (категории Value для IDC_CHECK2), m_slider1 (категории Control для IDC_SLIDER1).

  3. Добавим функцию OnCheck2 формирования сообщений BN_CLICKED для элемента IDC_CHECK2 и функцию OnHscroll обра­бот­ки сообщений WM_HSCROLL для класса CprimDlg.

  4. Нажмем кнопку Edit Code и откорректируем функции.

BOOL CPrimDlg::OnInitDialog() //инициализация формы с элементами

{ ... //неизменяемая часть функции

m_slider1.SetRange(0,1024,TRUE);//диапазон изменения регулятора

m_slider1.SetTicFreq(128); //расстояние между метками на шкале

m_slider1.SetLineSize(32); //длина шага при нажатии клавиш‑стрелочек

m_slider1.SetPageSize(256); //длина шага при нажатии клавиш PgDn, PgUp

m_progress1.SetRange(0,1024); //диапазон изменения индикатора

return TRUE;

}

Void cPrimDlg::OnCheck2()//обработка переключателя “Сброс”

{ UpdateData(); if (m_check2) m_progress1.SetPos(0); //сброс

}

Void cPrimDlg::OnHScroll(uint nSbCode, uint nPos, cScrollBar* pScrollBar) //функция обработки перемещения бегунка регулятора

{ //преобразование указателя класса CscrollBar на указатель CSliderCtrl

CSliderCtrl*slider=(CSliderCtrl*)pScrollBar;

//GetPos ‑ текущее значение бегунка, SetPos ‑ установка нового положения

if (!m_check2 &&(m_progress1.GetPos()<slider->GetPos()))

m_progress1.SetPos(slider->GetPos()); //новое состояние индикатора

CDialog::OnHScroll(nSBCode,nPos,pScrollBar); //выполнение OnHScroll

}

Вопросы для самопроверки и контроля

Вопросы для самопроверки

  1. Каково назначение функции UpdateData(1)?

  2. Укажите категорию переменной, назначенной ActiveX‑объекту.

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

  1. Каково назначение функции UpdateData(0)?

  2. Каково назначение метода Set<имя свойства>(<значение>)?

  3. Каково назначение метода Get<имя свой­ст­ва>()?

Глава 8. Лабораторный практикум

8.1. Примеры программирования задач

8.1.1. Игра “Угадай число” (Delphi)

Составим программу‑игру “Угадай число” (рис. 8.1.1.1).