![]() Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Массивы элементов управления. Задача: Выстроить вдоль нижней кромки формы на равных расстояниях друг от друга 20 автомобилей, вот так:
Задача: Выстроить вдоль нижней кромки формы на равных расстояниях друг от друга 20 автомобилей, вот так:
При нажатии кнопки эти автомобили должны прыгнуть вверх, вот так:
(самый левый остается на месте). Трудности: Нам нужно поместить на форму 20 элементов управления Image и загрузить в них картинку автомобиля, что само по себе утомительно. Расположить их вручную на равных расстояниях тоже нелегко. Visual Basic дает возможность изящно преодолеть все эти трудности программным путем. Ваши действия: Поместите на форму один объект Image и дайте ему имя imgАвто. Загрузите в него картинку автомобиля. Обратите внимание на его свойство Index. Оно пусто. Это значит, что данный объект пока не является элементом массива объектов. Заголовок у окна свойств такой: Properties - imgАвто. Придайте свойству Index какое-нибудь целое неотрицательное значение, например 1. Тут же заголовок у окна свойств меняется: Properties - imgАвто(1). Это значит, что данный объект стал элементом массива объектов. Пока в этом массиве один элемент - imgАвто(1). Как создать остальные объекты массива? Можно вручную, скопировав его обычным образом, как я объснял в 11.3, но отвечая на вопрос - Yes. При этом Visual Basic будет придавать новым объектам индексы от 0 и выше. Но быстрее это сделать программным путем. Так, оператор Load imgАвто(4) создаст (загрузит) на форме новый объект imgАвто с индексом 4. Значит, если применить оператор в цикле, он загрузит нам все нужные объекты и создаст их массив. Безо всякого объявления. Вот программа: Dim i As Integer Dim N As Integer 'Количество объектов ______________________________________________________________________ Private Sub Form_Load() N = 20 'Загружаем на форму и делаем видимыми все объекты массива, кроме первого (который и так уже загружен): Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок. — Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта. — Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы). — SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание. SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение For i = 2 To N Load imgАвто(i) imgАвто(i).Visible = True Next 'Помещаем на свои места все объекты массива: For i = 1 To N imgАвто(i).Top = Height - 1000 imgАвто(i).Left = 300 * i Next End Sub ______________________________________________________________________ Private Sub Command1_Click() 'Прыжок всех объектов: For i = 1 To N imgАвто(i).Top = imgАвто(i).Top - 50 * (i - 1) Next End Sub Пояснения: Как обычно, первой выполняется процедура Form_Load, которая все создает и расставляет. Затем процедура Command1_Click выполняет прыжок автомобилей.
Вот более " правильный" вариант той же программы, использующий процедуры с параметрами: Dim i As Integer Dim N As Integer ______________________________________________________________________ Private Sub Form_Load() N = 20 'Загружаем на форму и делаем видимыми все объекты, кроме первого (который и так уже загружен): For i = 2 To N Load imgАвто(i) imgАвто(i).Visible = True Next 'Помещаем на место все объекты: For i = 1 To N Поместить_автомобиль_на_место i Next End Sub ______________________________________________________________________ Private Sub Command1_Click() 'Прыжок всех автомобилей: For i = 1 To N Прыжок_автомобиля i Next End Sub ______________________________________________________________________ 'Процедура, помещающая на место один объект из массива с индексом Номер_автомобиля: Private Sub Поместить_автомобиль_на_место(Номер_автомобиля As Integer) imgАвто(Номер_автомобиля).Top = Height - 1000 imgАвто(Номер_автомобиля).Left = 300 * Номер_автомобиля End Sub ______________________________________________________________________ 'Процедура прыжка одного объекта из массива с индексом Номер_автомобиля: Private Sub Прыжок_автомобиля Прыжок_автомобиля (Номер_автомобиля As Integer) imgАвто(Номер_автомобиля).Top = imgАвто(Номер_автомобиля).Top - 50 * (Номер_автомобиля - 1) End Sub В процедуре Прыжок_автомобиля вы можете задавать разным автомобилям разное поведение. Например: If Номер_автомобиля = 8 Then imgАвто(Номер_автомобиля).Top = 1000 If Номер_автомобиля = 14 Then imgАвто(Номер_автомобиля).Visible = False
Чтобы удалить (выгрузить) 4-й объект с формы, применяем оператор Unload imgАвто(4).
Обратите внимание, что теперь, работая в окне кода и пытаясь получить заготовку процедуры для обработки события, принадлежащего автомобилю, вы получите ее с параметром Index, значение которого равно индексу автомобиля, с которым происходит событие, в массиве. Это позволяет вам задавать разную реакцию автомобилей на одно и то же событие. Например, следующая процедура Сервис онлайн-записи на собственном Telegram-боте
Попробуйте сервис онлайн-записи VisitTime на основе вашего собственного Telegram-бота:— Разгрузит мастера, специалиста или компанию; — Позволит гибко управлять расписанием и загрузкой; — Разошлет оповещения о новых услугах или акциях; — Позволит принять оплату на карту/кошелек/счет; — Позволит записываться на групповые и персональные посещения; — Поможет получить от клиента отзывы о визите к вам; — Включает в себя сервис чаевых. Для новых пользователей первый месяц бесплатно. Зарегистрироваться в сервисе Private Sub imgАвто_Click(Index As Integer) If Index = 2 Then imgАвто(Index).Top = imgАвто(Index).Top + 200 Else imgАвто(Index).Visible = False End Sub позволяет вам превращать любой автомобиль щелчком мыши в невидимку, а 2-й автомобиль вместо этого отскакивает.
|