Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие по VB. Часть2.doc
Скачиваний:
24
Добавлен:
02.02.2015
Размер:
870.4 Кб
Скачать

8.2.6. Код программы

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

  1. потеря фокуса текстовым полем txtТребуется;

  2. изменение любого значения в массиве текстовых полей txtПлан.

Причем обработка обоих событий производится одинаково в соответствии со схемой алгоритма, представленной на рис. 8.2. Поэтому для обработки первого события составляется процедура по схеме алгоритма, а тело второй процедуры состоит из вызова первой. Тексты соответствующих процедур представлены ниже.

Option Explicit

'Вычисление отклонения заданного плана на неделю

'от требуемого значения показателя

Private Sub txtТребуется_LostFocus()

Dim sngИтого As Single 'Сумма плана по дням

Dim sngТребуется As Single 'Требуемое значение

Dim i As Byte 'Номер дня недели

'Вычисление суммы плановых значений по дням недели

sngИтого = 0

For i = 1 To 7

sngИтого = sngИтого + CSng(txtПлан(i - 1))

Next i

'Вывод на форму

lblИтого = Format(sngИтого, "0.00")

'Подготовка к использованию в вычислениях

sngТребуется = CSng(txtТребуется)

'Вывод сообщения об отклонении

If sngИтого > sngТребуется Then

lblОтклонение = "Перевыполнение"

lblОтклонение.BackColor = vbYellow

ElseIf sngИтого < sngТребуется Then

lblОтклонение = "Недовыполнение"

lblОтклонение.BackColor = vbRed

Else

lblОтклонение.BackColor = vbGreen

lblОтклонение = "Норма"

End If

'Вычисление и вывод величины отклонения

txtОтклонение = Abs(sngИтого - CSng(txtТребуется))

End Sub

'Те же действия, что и в предыдущей процедуре,

'но при изменении планового значения в любой день

Private Sub txtПлан_Change(Index As Integer)

txtТребуется_LostFocus

End Sub

8.2.7. Реализация проекта

  1. Запустить на выполнение VB для создания нового проекта.

  2. Задать заголовок формы и ее имя.

  3. Для ввода требуемого значения показателя создать текстовое поле txtТребуется и надпись к нему.

4. Для определения контейнера, в котором будут содержаться данные по дням недели, создать рамку fraEжедневный_план достаточных размеров, чтобы в ней поместился массив текстовых полей из семи элементов.

5. Для ввода плановых значений по дням недели создать внутри рамки текстовое поле txtПлан и надпись lblПн (для понедельника) к нему. Свойству Text для поля txtПлан задать значение ноль. Скопировать пару этих элементов в буфер, а затем вставить из буфера в рамку. При вставке подтвердить запрос VB о том, что создается массив элементов. Затем еще пять раз произвести вставки из буфера. Таким образом, в рамке будет содержаться семь текстовых полей с соответствующими надписями (заголовки надписей скорректировать в соответствии с днями недели).

  1. Для вывода суммы плановых значений по дням недели (величина «Итого») создать ниже рамки пару надписей на одном уровне – свойству Caption левой задать значение Итого, а для правой установить значения следующих свойств:

Name:  lblИтого,

Caption: пусто,

BorderStyle: 1.

  1. Для вывода текстовой и числовой информации об отклонении суммы плановых значений от требуемой величины показателя под предыдущей парой надписей создать текстовое поле с надписью слева от него. Установить значения следующих свойств надписи:

Name:  lblОтклонеие,

Caption: пусто.

Для текстового поля установить значения следующих свойств:

Name:  txtОтклонение

Text:   пусто.

  1. Для создания процедуры обработки события ”Потеря фокуса текстовым полем txtТребуется” дважды щелкнуть на этом поле, в поле со списком <Procedure> выбрать событие LostFocus и ввести тело процедуры.

  2. Для создания процедуры обработки события “Изменение значения в массиве текстовых полей txtПлан” дважды щелкнуть на любом текстовом поле массива элементов управления txtПлан и в заготовку процедуры скопировать имя предыдущей процедуры txtТребуется_LostFocus

10. Сохранить форму и проект в папке на диске D:.