Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ИП 2010-04-04 doc.doc
Скачиваний:
108
Добавлен:
13.05.2015
Размер:
5.96 Mб
Скачать

6.9. Комбинированные поля (ComboBox)

Комбинированное поле сочетает возможности текстового поля и списка и занимает меньше места, чем списки.

Специфичные свойства

List, ListCount,NewIndex, Listindex, Sortи методыAddItem, RemoveItem ‑ ана­логичны одноименным свойствам списков.

Style‑ задает тип поля:vbComboDropDown(раскрывающее)vbCom­bo­Simple(прос­тое) иvbComboDropDownList(раскрывающийся список).

Раскрывающее полеимеет справа кнопку со стрелкой. После ее нажатия появляется список, и можно выбрать нужный элемент. Он поместится в поле, либо его можно ввести в поле.

Простое поле аналогично раскрывающему, но список открыт.

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

6.10. Рисунки (Image)

Поля с рисунками (файлы типов BMP,ICO,WMF,EMF,GIF,JPEG).

Специфичные свойства

Picture‑ имя графического файла с рисунком.

Stretch=False ‑ размеры рисунка на форме автоматически подго­няю­тся под раз­мер исходного изображения, иначе (Stretch=True) изображение масшта­­би­ру­ет­ся вмес­те с элементом, растягиваясь или сжимаясь.

6.11. Графические поля (PictureBox)

Графические поля подобны рисункам, но имеют следующие отличия:

  1. Занимают больше места, чем рисунки, и обеспечивают более высокое качество вывода.

  2. Во время выполнения программы в поле можно выводить текст и графику методами Circle, Cls, Line, PaintPicture, Print, Pset.

  3. Выполняют роль контейнера, в который можно поместить другие объекты (кнопки, текстовые поля, надписи и др.).

  4. Изображение не растягивается (свойство Stretch=False).

Специфичные свойства

AutoSize=True ‑ размер поля подгоняется под изображение.

Image=True‑ позволяет копировать графические поля при выполнении программы. Можно преобразовать картинки типаICOв изображенияBMP.

Примеры

Picture2.Picture=Picture1.Image ‘копирование картинки

SavePicturePicture2.Picture,“Фото Иванова.bmp” ‘сохранение картинки в файле

Picture1.Picture=LoadPicture(“FilePic”) ‘загрузка картинки из файла “FilePic”

Picture1.Picture=LoadPicture() ‘очистка поля

6.12. Таймеры (Timer)

Таймер не появляется на форме во время выполнения программы и проверяет показания системных ча­­сов.

Специфичное свойство Intervalзадает интервал в миллисекундах (от 56 до 64757), и после истече­ния указанного интервала генерируется событие Timer. Тай­мер отклю­чает­ся при Interval=0 илиEnabled=False. Общее количество тай­ме­ров для всех приложений ограничено числом 31.

Пример. Вывести надпись с текущим временем, обновляя эту над­пись через каждую секунду. Разместите на форме Timer и надпись Label1. За­дай­те для объекта Timer свойство Interval=1000 (одна секунда). Щелкни­те дважды на таймере и напишите процедуру для события Timer:

Private Sub timer1_Timer() : Label1.Caption=Time() : End Sub

Пример программы теcтирования по арифметике (рис. 6.12.1).

Кнопкой Тестзапускается процедура очистки полей ввода и меток; запускается счетчик времени; формируются случайные числа, которые выводятся в качестве операндов в виде меток Label1-Label8. В метке Label14 находится число секунд, оставшихся до окончания тестирования.

Кнопкой Проверитьзапускается процедура проверки правильности введенных ответов и, если ответ ошибочен, оценка снижается на балл и выводится правильный ответ в виде метки (Label9-Label12). Счетчик времени останавливается, выводится оценка (Label13). Кноп­койВыходзавершается работа программы.

Рис. 6.12.1. Форма тестирования

Приведем текст процедур обработки событий для данной задачи

Стандартный раздел (General)(Declaration) формы

Option Base 1 ‘отсчет элементов массива начинается с единицы

Private H(4, 2) As Integer ‘объявление массива значений операндов

Private Sub Form_Activate() ‘активизация формы перед ее выводом

‘очистка меток и полей ввода

Label1.Caption = “”: Label2.Caption = “” : Label3.Caption = “”

Label4.Caption = “”: Label5.Caption = “”: Label6.Caption = “”

Label7.Caption = “”: Label8.Caption = “”: Label9.Caption = “”

Label10.Caption = “”: Label11.Caption = “”: Label12.Caption = “”

Label13.Caption = “”: Label14.Caption = “”

Text1.Text = 0: Text2.Text = 0: Text3.Text = 0: Text4.Text = 0

Command2.Enabled=False ‘блокировка кнопки “Проверить”

End Sub ‘конец процедуры

Private Sub Command1_Click() ‘Процедура кнопкиТест

DimRAsInteger‘объявление локальной переменнойR

Timer1.Interval = 1000 ‘включение таймера с интервалом одна секунда

Randomize Timer ‘включение счетчика случайных чисел

H(1, 1) = Rnd * 99 + 1 ‘первое слагаемое в интервале 1-100

H(1, 2) = Rnd * 99 + 1 ‘второе слагаемое в интервале 1-100

H(2, 1) = Rnd * 99 + 1 ‘уменьшаемое в интервале 1-100

H(2, 2) = Rnd * 99 + 1 ‘вычитаемое в интервале 1-100

If H(2, 2) > H(2, 1) Then ‘вычитаемое строго больше уменьшаемого

R = H(2, 1) ‘вычитаемое и уменьшаемое меняются местами

H(2, 1) = H(2, 2)

H(2, 2) = R

End If

H(3, 1) = Rnd * 9 + 1 ‘первый множитель в интервале 1-10

H(3, 2) = Rnd * 9 + 1 ‘второй множитель в интервале 1-10

H(4, 2) = Rnd * 9 + 1 ‘делитель в интервале 1-10

H(4, 1) = (Int(Rnd * 9) + 1)*H(4,2) ‘делимое в интервале 1-100

Label1.Caption = H(1, 1) ‘вывод первого слагаемого в метку Label1

Label2.Caption = H(2, 1) ‘вывод уменьшаемого в метку Label2

Label3.Caption = H(3, 1) ‘вывод первого множителя в метку Label3

Label4.Caption = H(4, 1) ‘вывод делимого в метку Label4

Label5.Caption = H(1, 2) ‘вывод второго слагаемого в метку Label5

Label6.Caption = H(2, 2) ‘вывод вычитаемого в метку Label6

Label7.Caption = H(3, 2) ‘вывод второго множителя в метку Label7

Label8.Caption = H(4, 2) ‘вывод делителя в метку Label8

‘очистка полей с ответами школьника и меток с правильными ответами

Text1.Text = 0: Text2.Text= 0: Text3.Text= 0: Text4.Text= 0

Label9.Caption= “”: Label10.Caption = “” :Label11.Caption =””: Label12.Caption = “”

Label13.Caption = “” ‘очистка метки с оценкой

Label14.Caption = 60 ‘на ответ дается 60 секунд

Command2.Enabled=True ‘разблокировка кнопки “Проверить”

Text1.SetFocus ‘установка фокуса на поле Text1

End Sub ‘конец процедуры

Private Sub Command2_Click() ‘процедура кнопки “Проверить”

DimocenkaAsInteger‘объявление переменной с формируемой оценкой ocenka= 5 ‘начальное значение оценки 5 баллов

If(H(1,1)+H(1, 2)<>Val(Text1.Text)) Then ‘введенная сумма ошибочная

ocenka= ocenka‑ 1 ‘оценка уменьшается на один балл

Label9.Caption = H(1, 1) + H(1, 2) ‘вывод правильной суммы

End If

If (H(2,1)‑H(2, 2)<>Val(Text2.Text)) Then ‘введенная разность ошибочная

ocenka= ocenka‑ 1 ‘оценка уменьшается на один балл

Label10.Caption = H(2, 1) ‑ H(2, 2) ‘вывод правильной разности

End If

If (H(3, 1)*H(3, 2)<>Val(Text3.Text)) Then ‘произведение ошибочно

ocenka= ocenka‑ 1 ‘оценка уменьшается на один балл

Label11.Caption = H(3, 1) * H(3, 2) ‘вывод правильного произведения

End If

If (H(4,1)/H(4, 2)<>Val(Text4.Text)) Then ‘частное от деления ошибочно

ocenka= ocenka‑ 1 ‘оценка уменьшается на один балл

Label12.Caption = H(4, 1) / H(4, 2) ‘вывод правильного частного

End If

Label13.Caption = ocenka ‘вывод оценки в метку Label13

Timer1.Interval = 0 ‘отключение счетчика времени

End Sub ‘конец процедуры

Private Sub Command3_Click() ‘процедура кнопкиВыход

End ‘закончить выполнение программы

End Sub ‘конец процедуры

Private Sub Timer1_Timer() ‘процедура обработки интервала

‘уменьшение на одну секунду, оставшегося на ответ времени и его вывод

Label14.Caption= Label14.Caption ‑1

‘если время на ответ закончилось, то вызов обработчика кнопки “Проверить”

If Label14.Caption <= 0 Then Command2_Click

End Sub ‘конец процедуры