КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Коллекции
Private Type типПерсонаж Имя As String Здоровье As Integer Оружие As String End Type 'Затем создаем пользовательский тип игры: Private Type типИгра Название As String Объем As Integer Графика_хорошая As Boolean Персонаж(1 To 20) As типПерсонаж 'Не больше 20 персонажей в одной игре End Type 'Отводим в памяти место под информацию об играх: Dim Игра(1 To 30) As типИгра
Private Sub Form_Load() Игра(8).Персонаж(12).Имя = "Солдат" Игра(8).Персонаж(12).Здоровье = 140 Debug.Print Игра(8).Персонаж(12).Имя, Игра(8).Персонаж(12).Здоровье End Sub
Если вы захотите более подробно описать оружие, то можете создать еще один пользовательский тип. И так далее. Массивы и пользовательские типы могут вкладываться друг в друга, как матрешки, до бесконечности. Так создаются иерархии данных практически в любой области знаний.
Задание 121: Создайте базу данных о своих родственниках. О каждом родственнике должно быть известно: · Имя · Год рождения · Цвет глаз Массивы не используйте. Программа должна: · Распечатать ваш возраст и цвет глаз · Ответить на вопрос – правда ли, что ваш дядя старше тети.
Задание 122: Создайте базу данных о своих однокашниках. О каждом однокашнике должно быть известно: · Фамилия · Имя · Пол · Год рождения Обязательно используйте массив не меньше, чем из 10 записей. Программа должна: · Вычислить средний возраст ваших однокашников · Определить, кого среди них больше – дам или кавалеров · Ответить на вопрос – есть ли в вашей базе тезки (это нелегко).
Базы данных являются настолько распространенным средством хранения информации, что в Visual Basic есть специальные мощные инструменты для работы с ними. Мы рассмотрим их в Глава 22. Объектные переменные В предыдущих разделах вы видели, что значением переменной величины может быть сложная структура данных. Но переменная может иметь своим значением и еще более сложную вещь - объект.
Понятие объекта - сложное понятие программирования. Частными случаями объектов в Visual Basic являются формы и элементы управления. Исчерпывающее описание работы объектов выходит за рамки курса для начинающих. В этой главе мы только вскользь знакомимся с ними. В Глава 20 я попытался дать основные понятия об этой области программирования. В Visual Basic существует несколько типов, к которым может принадлежать объект. Самый общий тип - это Object. Если мы напишем Dim A As Object, то переменная A сможет принимать значения любых объектов. В нижеприведенном примере она сначала принимает значение метки, а затем формы. Для того, чтобы присвоить переменной значение существующего объекта, простой оператор присваивания не подходит, нужно писать так: Set A = Label1. Создайте проект с меткой. Private Sub Command1_Click() Dim A As Object Set A = Label1 A.FontSize = 20 A.Caption = "Привет!" 'Меняется надпись на метке Set A = Form1 A.Caption = "Еще один привет!" 'Меняется надпись на форме End Sub Вы видите, что как только мы присвоили переменной A значение метки Label1, мы смогли вместо Label1.FontSize = 20 писать A.FontSize = 20. Объектный тип Control - это тип элементов управления. Если мы напишем Dim A As Control, то переменная A сможет принимать значения не любых объектов, а только элементов управления. Зачем все это нужно? Один из примеров применения объектной переменной вы найдете чуть ниже в этом же разделе, где объектная переменная в цикле пробегает значения элементов управления на форме. Другой пример, когда объект является параметром процедуры, вы найдете в 17.7. Коллекции Коллекции так же относятся к пользовательским типам данных, как массивы элементов управления к массивам переменных величин. Коллекция- это набор элементов разного типа, таких как элементы управления, другие объекты. Коллекция и сама является объектом (а почему бы и нет? - коробки в коробке). Коллекции всеядны, они позволяют иметь в одном наборе и кнопку и метку и переменную величину типа Integer. Я ограничусь распространенным случаем, когда в коллекцию входят только элементы управления.
Задача: На вашей форме имеется несколько десятков кнопок, меток и текстовых полей, которые делают свое дело, скажем, помогают обрабатывать банковскую информацию - кто принес деньги, сколько принес, в долларах или рублях, да сколько денег у него стало, да сколько всего в банке денег и т.д. Вам нужно, чтобы в некоторый момент выполнения программы такие-то и такие-то кнопки, метки и текстовые поля из самых разных мест формы (всего, скажем, дюжина объектов) поменяли размер шрифта. Ну, скажем, для того, чтобы привлечь к себе внимание. А в какой-нибудь другой момент эта же дюжина должна сделать что-нибудь другое, например, кнопки из этой дюжины должны быть деактивированы, чтобы на них случайно не нажали. И так далее. Решение: Создадим проект. Для простоты разместим на форме только шесть элементов управления: Label1, Text1, Command1, Label2, Text2, Command2. Пусть в нашу "дюжину" входят из них только Label2, Text2, Command2. Программным путем создадим коллекцию из этих объектов. Для этого сначала придумаем ей имя Моя_коллекция и объявим ее так: Dim Моя_коллекция As New Collection Слово Collection означает коллекцию. Слово New мы пишем тогда, когда создаем новый объект (а коллекция - объект). Коллекция объявлена, но пока она пуста. Теперь будем по очереди добавлять объекты в коллекцию подобно тому, как в 13.6 мы добавляли объекты в массив. Но здесь другая грамматика. Смотрим программу: Dim Моя_коллекция As New Collection 'Объявляем коллекцию
Private Sub Command1_Click() Моя_коллекция .Add Label2 'Добавляем в коллекцию 1-й элемент Моя_коллекция .Add Text2, "Текстик" 'Добавляем в коллекцию 2-й элемент Моя_коллекция .Add Command2, "Кнопочка" 'Добавляем в коллекцию 3-й элемент
Debug.Print Моя_коллекция .Count 'Печатается 3 - число элементов в коллекции Debug.Print Моя_коллекция (1). Caption 'Печатается "Label2" Моя_коллекция (3). Height = 800 'Задается высота кнопки Command2 Моя_коллекция ("Текстик"). BackColor = vbYellow 'Задается цвет поля Text2
For Each Мой_объект In Моя_коллекция 'ДЛЯ КАЖДОГО объекта В коллекции Мой_объект.FontSize = 18 'задается размер шрифта
Дата добавления: 2014-12-23; Просмотров: 424; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |