Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ВУМИП 2012-07-06.doc
Скачиваний:
66
Добавлен:
13.05.2015
Размер:
9.35 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) //проверка выделенной строки в списке

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

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); //диапазон изменения индикатора

returnTRUE;

}

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).

Рис. 8.1.1.1. Вид формы игры «Угадай число»

В поле Edit1задается число N для формирования случайного поло­жи­тельного целого числа в интервале [0,N], и это число должен угадать иг­рок. КнопкойЗагадать число(Button1) формируется это случайное чис­ло. Иг­рок вводит предполагаемое число в полеEdit2и нажимает кнопкуПопытка. Если это число больше загаданного, то в полеEdit3(Резуль­тат) выводится текст подсказкиПерелет. Если это число меньше зага­дан­ного, то выводится текстНедолет. Наконец, при совпадении выводит­ся текстУгадал. Число использованных попыток выводится в полеEdit4. Разместим на форме соответствующие компоненты и зададим значения свойствуCaption.

Приведем тексты процедур программы.