Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Работа с несколькими формами
Все проекты, которые мы до этого создавали, работали в одном окне. Окном этим служила форма, на которой мы и собирали проект. Однако, вы вполне можете создать проект, который работает в двух или нескольких окнах. Например, вы создали игру в шахматы. Игра идет, как обычно, в одном окне. Пока компьютер обдумывает свой ход, вы со скуки щелчком по кнопке в окне игры запускаете новое окно, которое предлагает вам поиграть в созданный вами же тетрис. Когда компьютер сделает ход, вы можете поставить тетрис на паузу и продолжить игру в шахматы. Эту игру тетрис вы создавали в том же самом проекте, но собирали ее на другой форме этого проекта.
Посмотрим, как создать в проекте еще одну форму и как наладить простейшее взаимодействие между двумя формами. Создадим новый проект. При этом, как обычно, будет создана форма Form1. Чтобы добавить в проект еще одну форму, нужно выбрать Project®Add Form®New®Form®Open. Откроется форма Form2, а при ней свое окно кода. Таким образом, вы видите, что Visual Basic предоставляет удобную возможность программировать все происходящее в новой форме в окне кода, принадлежащем именно этой форме. Поместим для удобства рядом, как это показано на рисунке, обе формы со своими окнами кода. Разместим на формах показанные элементы управления, а в окна кода запишем программный текст.
Запустим проект. Мы видим, как и положено, Form1, а вот Form2 не появляется. Чтобы она появилась, нужно выполнить оператор Form2.Show. Щелкнем по Command1 - форма Form2 появилась. Пощелкайте по кнопкам Command2 на обеих формах. Теперь посмотрите на содержимое процедур Command2_Click в обоих окнах кода. Вы видите, что первая строка обеих процедур красит своего хозяина, вторая - соседа. Таким образом, в каждом окне кода можно, как и обычно, писать операторы, приказывающие что-то сделать в форме-хозяине данного окна, а можно с таким же успехом писать операторы, приказывающие что-то сделать в любой другой форме проекта. Чтобы Visual Basic отличал первый случай от второго, во втором случае перед именем свойства, принадлежащего другой форме, нужно писать имя этой формы с точкой, в первом же случае - не обязательно. Не обязательно, но можно. Так, в левом окне вместо BackColor = vbBlue можно было бы написать Form1.BackColor = vbBlue или даже так - Me.BackColor = vbBlue. Слово Me является указанием на хозяина. Пощелкайте по кнопкам Command3 на обеих формах. Теперь посмотрите на содержимое процедур Command3_Click в обоих окнах кода. Вы видите, что первая строка обеих процедур выводит текст в текстовое окно Text2 своего хозяина, вторая - в текстовое окно Text1 соседа. Таким образом, соглашение из предыдущего абзаца об имени формы с точкой применимо не только к свойствам формы, но и к объектам, принадлежащим форме, и, как мы сейчас увидим, методам. 3-я строка обеих процедур при помощи методов cls и Print очищает от графики поверхность формы-хозяина и печатает на ней число (11 на левой, 22 на правой). Слово Me пришлось написать, чтобы Visual Basic не посчитал cls: меткой. 4-я строка обеих процедур очищает от графики поверхность формы-соседа и печатает на ней число (21 на левой, 12 на правой). Чуть позже вы увидите, что из одной формы можно обращаться не только к свойствам, объектам и методам, принадлежащим другой форме, но и к переменным, процедурам и другим элементам. Правило везде одно: Перед именем элемента, принадлежащего другой форме, нужно ставить имя формы-хозяина с точкой.
|