к оглавлению   к 4GL - визуальному программированию

Работа со списком

Цель урока

В данном уроке создается приложение, на примере которого вы сможете научиться:

Практика

Создадим приложение, которое позволит выбрать несколько чисел, выводимых В списке В диалоговом Окне Операции над элементами списка (рис. У3.1).

В группе Операция следует установить один из переключателей: сумма, произведение или среднее, чтобы указать, какая операция будет выполняться над выбранными числами. Нажатие кнопки вычислить должно привести к выполнению операции и выводу результата в поле Результат.

Рис. У3.1. Диалоговое окно Операции над элементами списка

Обсудим, как приведенная ниже программа решает перечисленные задачи и что происходит в программе.

UserForm Initialize

  1. Активизирует диалоговое окно.
  2. Запрещает ввод данных в поле Результат,
  3. Назначает клавише <Esc> функцию кнопки Отмена, а клавише <Enter> — Вычислить.
  4. Связывает с кнопками вычислить и отмена, а также с переключателями всплывающие подсказки.

Нажатие кнопки вычислить запускает на выполнение процедуру

CommandButtonl Click

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

Нажатие кнопки Отмена запускает на выполнение процедуру

CommandButton2 Click

Закрывает диалоговое окно.

'

Private Sub CommandButtonl_Click()

'

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

' списка в зависимости от выбранной операции

'

Dim i As Integer

Dim n As Integer

'

' i - вспомогательная переменная

' n - играет роль счетчика числа выбранных элементов из списка

'

Dim Сумма As Double

Dim Произведение As Double

Dim Среднее As Double

Dim Результат As Double

'

' Сумма - сумма выбранных элементов из списка

' Произведение - произведение выбранных элементов из списка

' Среднее - среднее арифметическое значение выбранных элементов из списка

' Результат - в эту переменную записывается результат, найденный

' в зависимости от выбранного переключателя

'

'

' При выборе первого переключателя вычисляется сумма выбранных элементов

If OptionButtonl.Value = True Then Сумма = 0

With ListBoxl

For i = 0 To .ListCount - 1

If .Selected(i) = True Then Сумма = Сумма + .List(i)

End If

Next i

End With

Результат = Сумма

End If

'

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

'

выбранных элементов

'

If OptionButton2.Value = True Then Произведение = 1

With ListBoxl

For i = 0 To .ListCount - 1

If .Selected(i) = True Then

Произведение = Произведение * .List(i)

End If

Next i

End With

Результат = Произведение End If

'

' При выборе третьего переключателя вычисляется среднее арифметическое

' значение выбранных элементов

'

If OptionButton3.Value = True Then Среднее = 0

n = 0

With ListBoxl

For i = 0 To .ListCount - 1 i

If .Selected(i) = True Then

n = n + 1

Среднее = Среднее + .List(i)

End If

Next i

End With

Результат = Среднее / n

End If

' Результат выводится в поле Результат

'

TextBoxl.Text = CStr(Format(Результат, "Fixed"))

End Sub

Private Sub CommandButton2_Click()

'

' Процедура закрытия диалогового окна

'

UserForml.Hide

End Sub

'

'

Private Sub UserForm_Initialize()

'

' Процедура инициализации диалогового окна

'

' Заполнение списка и установка режима выбора

' нескольких элементов из списка

'

With ListBoxl

.List = Array(1, 3, 4, 5, 6, 7, 8, 10)

.Listlndex = 0

.MultiSelect = fmMultiSelectMulti

End With

'

' Первоначальный выбор переключателя Сумма при

' инициализации диалогового окна и задание

' текста всплывающих подсказок у переключателей

'

With OptionButtonl

.Value = True

.ControlTipText = "Сумма выбранных элементов"

End With OptionButton2.ControlTipText = "Произведение выбранных элементов"

OptionButton3.ControlTipText = "Среднее значение выбранных элементов"

'

' Поле Результат не доступно для пользователя

'

TextBoxl.Enabled = False

' Назначение клавише <Enter> функции кнопки Вычислить

' и задание текста всплывающей подсказки

With CommanandButtonl

.Default = True

.ControlTipText = "Нахождение результата"

End With

'

' Назначение клавише <Esc> функции кнопки Отмена

' и задание текста всплывающей подсказки

'

CommandButton2.Cancel = True

'

' Задание -заголовка пользовательской формы

'

UserForm1.Caption = "Операции над элементами списка"

UserForm1.Show

End Sub

Самостоятельное задание

Интересной особенностью приводимой процедуры инициализации userForm_initiaiize является то, что заголовок диалогового окна вводится программно при помощи свойства Caption, а не вручную при помощи окна Свойства (Properties).

Стоит также отметить небольшой недостаток этой программы, связанный с тем, что в ней не построен обработчик ошибок. Хотя на первый взгляд кажется, что в программе обработчик ошибок совсем не нужен, это не так. Ошибка может возникнуть, например при вычислениях, если выводимый в списке массив данных содержит как числа, так и строковые константы.

В качестве самостоятельного задания составьте программу нахождения среднего балла студентов, выбранных из списка в диалоговом окне Средний балл (рис. УЗ.2). Список заполните из данных, введенных из диапазона на рабочем листе с помощью свойства RowSource объекта ListBox. Фамилии студентов пусть будут расположены в столбце А, а их оценки в столбце в диапазона с данными о студентах. Создайте в программе обработчик ошибок, который будет проверять, являются ли данные из второго столбца списка с оценками студентов числами. Если хотя бы одно из этих данных не является числом, программа должна проинформировать об этом пользователя с просьбой исправить найденную некорректность. Обратите внимание также на то, чтобы в диалоговом окне средний балл надписи на кнопках ок и Отмена для большей презентабельности были выведены полужирным шрифтом увеличенного размера.

Рис. УЗ.2. Диалоговое окно Средний балл

к оглавлению   к 4GL - визуальному программированию

Знаете ли Вы, что в 1974 - 1980 годах профессор Стефан Маринов из г. Грац, Австрия, проделал серию экспериментов, в которых показал, что Земля движется по отношению к некоторой космической системе отсчета со скоростью 360±30 км/с, которая явно имеет какой-то абсолютный статус. Естественно, ему не давали нигде выступать и он вынужден был начать выпуск своего научного журнала "Deutsche Physik", где объяснял открытое им явление. Подробнее читайте в FAQ по эфирной физике.

НОВОСТИ ФОРУМАФорум Рыцари теории эфира
Рыцари теории эфира
 20.11.2019 - 07:47: СОВЕСТЬ - Conscience -> РУССКИЙ МИР - Карим_Хайдаров.
20.11.2019 - 07:03: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Вячеслава Осиевского - Карим_Хайдаров.
20.11.2019 - 07:01: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Марины Мелиховой - Карим_Хайдаров.
19.11.2019 - 09:07: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Андрея Маклакова - Карим_Хайдаров.
18.11.2019 - 19:10: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> Проблема государственного терроризма - Карим_Хайдаров.
16.11.2019 - 12:16: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Игоря Кулькова - Карим_Хайдаров.
15.11.2019 - 06:45: ВОЙНА, ПОЛИТИКА И НАУКА - War, Politics and Science -> РАСЧЕЛОВЕЧИВАНИЕ ЧЕЛОВЕКА. КОМУ ЭТО НАДО? - Карим_Хайдаров.
14.11.2019 - 12:35: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Светланы Вислобоковой - Карим_Хайдаров.
13.11.2019 - 19:20: ЭКОНОМИКА И ФИНАНСЫ - Economy and Finances -> ПРОБЛЕМА КРИМИНАЛИЗАЦИИ ЭКОНОМИКИ - Карим_Хайдаров.
12.11.2019 - 11:53: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Бориса Сергеевича Миронова - Карим_Хайдаров.
12.11.2019 - 11:49: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Веры Лесиной - Карим_Хайдаров.
10.11.2019 - 23:14: ВОСПИТАНИЕ, ПРОСВЕЩЕНИЕ, ОБРАЗОВАНИЕ - Upbringing, Inlightening, Education -> Просвещение от Кирилла Мямлина - Карим_Хайдаров.
Bourabai Research Institution home page

Bourabai Research - Технологии XXI века Bourabai Research Institution