Введение 8 Этапы создания Windowsприложения 8
Скачать 6.98 Mb.
|
10.2. Оператор WithДля того чтобы обратиться к Public полю структуры или вызвать Public метод надо указать имя переменной, имеющей тип структуры, и через точку напечатать имя нужного поля или метода. Например. Dim g as Gorod g.Nazvanie = "Москва" g.Den = 34 g.Noch = 21 Когда нужно обработать сразу несколько полей структуры, можно использовать оператор With. Он позволяет упростить текст программы, сделав его более наглядным. Рассмотрим общей вид этого оператора. With Имя переменной, имеющей структурный тип Операторы End With Внутри оператора With имя обрабатываемой переменной не указывается, а обращение к нужному полю или методу начинается с точки. Dim g as Gorod With g .Nazvanie = "Москва" .Den = 34 .Noch = 21 End With 10.3. Ввод массива структурВвод массива структур практически не отличается от ввода одномерного массива. Он также состоит из двух этапов. На первом этапе указывается количество элементов в массиве и соответствующим образом переопределяется размер массива. На втором этапе организуется цикл, на каждом шаге которого вводится значение одного элемента. Рассмотрим особенности программной реализации этого алгоритма применительно к обработке массива структур. Сначала описывается массив структур a(). Так как его размер заранее неизвестен, то массив описывается без указания верхней границы. Dim a()As Gorod Для работы с массивом нам необходимо знать его размер. Он будет храниться в переменной n. Поскольку массивы всегда обрабатываются в цикле, то для организации цикла For нам потребуется счетчик i. Очевидно, что обе эти переменных всегда будут иметь целый тип. Dim n, i As Integer Задание массива начинается с определения его размера. Мы просим пользователя указать количество городов. Так как количество городов может быть только положительным, то при вводе этого значения необходима проверка, которую мы организуем с помощью цикла Do Loop Until. Do n = Val(InputBox("Введите количество городов")) Loop Until n > 0 В Visual Basic 2005 нумерация элементов массива всегда начинается с нуля. Следовательно, номер последнего элемента будет на единицу меньше общего количества элементов массива. Поэтому уменьшаем значение переменной n на единицу. Теперь в ней хранится не количество элементов, а номер последнего элемента массива. n -= 1 Задаем размер массива a(), указывая в операторе ReDim номер последнего элемента массива. ReDim a(n) Организуем цикл для ввода значений элементов массива. Элементы массива последовательно пронумерованы от 0 до n. Следовательно, счетчик цикла должен изменяться в этом же диапазоне. Тогда на i-м шаге цикла мы будем вводить элемент массива с номером i. For i = 0 To n Теперь надо ввести значения всех полей для очередного элемента массива. Для этого будем использовать функцию InputBox. По правилам языка Visual Basic 2005 значение каждого поля структуры должно вводиться по отдельности. Сразу ввести значения всех полей нельзя. При вводе значения строкового поля никаких дополнительных преобразований не требуется. a(i).Nazvanie = InputBox("Название города") При вводе значений числовых полей необходимо использовать преобразование Val. a(i).Den = Val(InputBox("Дневная температура")) a(i).Noch = Val(InputBox("Ночная температура")) Next После завершения цикла массив структур полностью введен и может обрабатывать в соответствии с условием задачи. 10.4. Вывод массива структурДля вывода массива структуры, как правило, используется окно списка, хотя можно организовать вывод и в другие элементы управления, например в текстовое поле. Рассмотрим фрагмент программы, реализующий вывод массива структур в окно списка. Сначала очищаем окно списка от результатов предыдущих запусков программы. lstGorod.Items.Clear() Выводим заголовки колонок. Колонки организуются с помощью константы vbTab. lstGorod.Items.Add("Город" + vbTab + "День" + _ vbTab + "Ночь") Выводим горизонтальную черту, чтобы зрительно отделить заголовки колонок от значений соответствующих полей. lstGorod.Items.Add("------------------------------") Организуем цикл для обработки всех элементов массива структур. For i = 0 To n Для формирования одной строки из значений полей структуры мы разработали специальный метод (см. раздел 10.1). В окно списка будем выводить строку, которую нам вернет метод Print. lstGorod.Items.Add(a(i).Print) Next |