Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Как продвинуть сайт на первые места?
    Вы создали или только планируете создать свой сайт, но не знаете, как продвигать? Продвижение сайта – это не просто процесс, а целый комплекс мероприятий, направленных на увеличение его посещаемости и повышение его позиций в поисковых системах.
    Ускорение продвижения
    Если вам трудно попасть на первые места в поиске самостоятельно, попробуйте технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Если ни один запрос у вас не продвинется в Топ10 за месяц, то в SeoHammer за бустер вернут деньги.
    Начать продвижение сайта
  • Массивы элементов управления. Задача: Выстроить вдоль нижней кромки формы на равных расстояниях друг от друга 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

    'Загружаем на форму и делаем видимыми все объекты массива, кроме первого (который и так уже загружен):

    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, значение которого равно индексу автомобиля, с которым происходит событие, в массиве. Это позволяет вам задавать разную реакцию автомобилей на одно и то же событие. Например, следующая процедура

    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-й автомобиль вместо этого отскакивает.

     






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.