Помощь находится совсем близко
В любой момент можно получить справку по любому свойству — достаточно выделить его в окне свойств и нажать клавишу F1. Например, при выделении свойства Caption появляется окно следующего вида.
Вы можете прокручивать это окно и щелкать на ссылках (подчеркнутом тексте) для поиска взаимосвязанной информации. Вкладки в верхней части списка (Contents, Index, Search и Favorites) открывают доступ к дополнительным средствам для получения справки по Visual Basic.
Возможно, вы заметили, что это окно не похоже на традиционные окна справки, использовавшиеся в прошлом. Начиная с версии 6, фирма Microsoft включает в состав Microsoft Developer Network (MSDN) справочные системы в формате HTML. Эта тема подробно рассматривается в уроке 13, «Создание и использование справочных файлов».
Давайте более подробно рассмотрим самые распространенные свойства (названия свойств в ближайших разделах упорядочены по алфавиту для облегчения поиска; в окне свойств они также следуют в алфавитном порядке).
Свойство BackColor
Свойство BackColor, о котором кратко упоминалось в уроке 1, определяет цвет фона для формы. Вы можете выбрать любой вариант, присутствующий в палитре. Если дважды щелкнуть на свойстве BackColor в окне свойств или нажать кнопку со стрелкой рядом с цветовым значением, откроется диалоговое окно с цветовой палитрой и перечнем системных цветов.
Старайтесь избегать прямого назначения цвета фона, поскольку при этом пользователь не сможет пользоваться цветовой схемой, определяемой в панели управления. Более того, на вашу программу нельзя будет поместить логотип «Designed for Windows».
Свойство Border-Style
Свойство BorderStyle определяет особенности границы, окружающей форму. Граница может быть фиксированной, т. е. сохраняющей постоянные размеры, или масштабируемой — в этом случае ее размеры можно изменять перетаскиванием. В табл. 2.1 перечислены все возможные значения свойства BorderStyle.
Таблица 2.1. Значения свойства BorderStyle
Значение | Описание |
О-None | Запрещает изменение размеров и перемещение формы. Оконное меню, кнопки закрытия, свертывания и развертывания, а также заголовок формы отсутствуют. Хотя это значение используется довольно редко, оно может пригодиться для создания заставок |
1 - Fixed Single | Размеры формы нельзя изменять перетаскиванием краев, однако можно воспользоваться кнопками свертывания и развертывания |
2 - Sizable | Используется по умолчанию для форм Visual Basic и в большинстве других окон приложений Windows. Пользователь может изменить размеры формы перетаскиванием краев или с помощью соответствующих кнопок на заголовке |
3 - Fixed Dialog | Как нетрудно догадаться по имени, обычно это значение выбирается для форм, используемых в качестве диалоговых окон. Изменить размеры формы не удается — ее можно только переместить или закрыть. Если пользователь непременно должен выполнить какие-то действия с формой, установите значение свойства ControlBox в False — в этом случае пользователь не сможет даже закрыть форму (остается лишь перемещать ее перетаскиванием заголовка). Вероятно, в такой ситуации на форме следует разместить кнопки и включить в код события Click строку, которая будет закрывать форму (например, frmFormName.Hide) |
4 —Fixed ToolWindow | Действует аналогично значению Fixed Dialog, но добавляет кнопку закрытия (кроме того, название в заголовке выводится уменьшенным шрифтом). Форма не отображается в панели задач |
5 — Sizable ToolWindow | To же, что и Sizable, но без кнопок свертывания и развертывания. В Windows 95 содержит кнопку закрытия, но не отображается в панели задач |
Поэкспериментируйте с этими значениями — для этого можно воспользоваться формой из приложения Hello World, созданного в уроке 1. Чтобы открыть проект Hello World, выполните команду File > Open Project и выберите проект, сохраненный во время урока 1.
1. В окне конструктора щелкните на форме, чтобы сделать ее активным объектом.
2. Поскольку форма Hello World больше похожа на диалоговое окно, а не на обычную форму, установите значение свойства BorderStyle в 3 - Fixed Dialog.
3. Запустите измененную программу Hello World командой Run > Start.
Обратите внимание — форма не «растягивается» мышью. У вас получилось настоящее диалоговое окно.
Свойство Caption
Данное свойство определяет текст, который выводится в заголовке формы. Если установить значение свойства BorderStyle в None, то название (вместе с заголовком) исчезнет. Дополнительная информация об изменении свойства Caption приведена далее, в разделе «Настройка свойств формы» этой главы.
Свойство ControlBox
Значение True или False этого свойства определяет, присутствует ли в заголовке кнопка оконного меню. Не забывайте о том, что свойства BorderStyle, ControlBox, MaxButton и MinButton взаимозависимы. Например, если убрать кнопку развертывания и открыть оконное меню, то в нем не окажется команды для развертывания или восстановления формы. Или другой пример — если присвоить свойству BorderStyle значение FixedToolWindow, то оконное меню исчезнет, даже если вы явно включите его в программе.
Остановите приложение Hello World, если вы не сделали этого ранее. В режиме конструирования сделайте следующее:
1. Сделайте форму активным объектом.
2. В окне свойств присвойте свойству ControlBox значение False.
3. Снова запустите программу (Run > Start).
Теперь на заголовке нет ни кнопки оконного меню (в левой части), ни кнопки закрытия (в правой). Единственный способ закрыть форму — нажать кнопку ОК.
Свойство ForeColor
Данное свойство не влияет на цвет объектов, которые вы размещаете на форме, -оно относится только к тексту, выводимому на ней. Например, если вам захочется вывести текст красными буквами на форме, выберите для свойства ForeColor красный цвет. После этого весь текст, выводимый методом Print, станет красным. Не стоит уделять возможности вывода текста на форме слишком много внимания, она используется крайне редко. Помните, что цвет самой формы определяется свойством BackColor.
Давайте попробуем разместить на форме кнопку (подробнее см. в уроке 3) и изменить ее цвет вместе с цветом формы:
1. Создайте новый проект командой File > New Project.
2. Разместите на форме Form1 кнопку, дважды щелкнув на элементе-кнопке в панели элементов.
3. Когда кнопка окажется на форме, дважды щелкните на ней, чтобы открыть код события Click( ) для данной кнопки.
4. В процедуре Click введите следующую строку:
Print "Hello World"
Теперь немного поэкспериментируйте, изменяя свойства BackColor и ForeColor в окне свойств. Вы увидите, как они влияют друг на друга. Если вам захочется скрыть текст, присвойте BackColor и ForeColor одинаковые значения, например:
, BackColor = ForeColor
Свойство Height
Свойство Height определяет высоту формы. Его можно задать, перетаскивая край формы в режиме конструирования. По умолчанию свойство Height (а также свойства Width, Left и Тор) задается в специальных единицах — тейпах (twips). Пока не стоит беспокоиться о единицах измерения — они станут существенными, когда у вас появится опыт работы в Visual Basic. Если вы хотите определить точные размеры формы или любого элемента, задайте значения свойств Height и Width. Пользуясь формой из предыдущего примера:
1. В окне свойств установите значение Width в 3600.
2. Установите значение Height в 3600.
Обратите внимание — размер формы изменяется прямо в конструкторе, для этого даже не нужно запускать программу. Впрочем, в данный момент это не представляет особой ценности, потому что размеры формы можно задать и визуально, перетаскивая края границы в конструкторе форм. Чтобы лучше понять, о чем идет речь, попробуйте следующий пример:
1. Дважды щелкните на форме, чтобы перейти к окну программы. В двух раскрывающихся списках, расположенных в верхней части окна программы, должны
быть выбраны строки Form и Load; это означает, что в настоящий момент вы работаете с событием Load объекта-формы. Не беспокойтесь о подробностях происходящего — мы рассмотрим их в уроке 4, «Работа с модулями и классами».
2. Прокручивайте правый список до тех пор, пока не найдете в нем строку Resize. Тем самым вы переходите к событию Resize данной формы.
3. Введите в событии Resize следующую строку: Width = Height
4. Запустите проект командой Run > Start.
Попробуйте изменить размеры формы, перетаскивая ее верхний или нижний край. Обратите внимание — форма автоматически изменяет свои размеры и превращается в идеальный квадрат. На этом примере видно, как задать значения свойств во время выполнения программы.
Попытайтесь перетащить левый или правый край. Размеры формы не изменяются, вместо этого она возвращается к прежним размерам. Это происходит из-за того, что введенная вами строка всегда устанавливает ширину формы равной высоте. Ширина не может измениться без изменения высоты.
Свойство Icon
Если дважды щелкнуть на имени этого свойства, вам будет предложено выбрать значок для формы. Свойство Icon определяет значок, который выводится на панели задач при свертывании формы в режиме выполнения. Мы уже встречались с этим свойством в уроке 1. Оно никак не действует, если форму невозможно свернуть, например если вы присвоили свойству BorderStyle значение Fixed Dialog.
Если вы установили все компоненты Visual Basic, то сможете найти богатый ассортимент значков в каталоге \Graphics\Icons, — а если их там не окажется, поищите в том же каталоге на Visual Basic CD-ROM. Задача облегчается тем, что Windows 95 позволяет просматривать изображение значка при его выборе.
Свойство Left
Это свойство отчасти похоже на Height и Width, о которых говорилось ранее. Отличие заключается в том, что свойство Left определяет расстояние от формы от левого края экрана. Обычно оно используется в сочетании со свойством Тор, определяющим расстояние от формы до верхнего края экрана. Следующий пример отображает форму в центре экрана:
1. Остановите программу, если вы не сделали этого ранее.
2. Дважды щелкните на форме, чтобы вернуться к событию Resize.
3. Добавьте следующие строки в событие Resize под строкой Width = Height:
Left = (Screen.Width - Width) / 2
Top = (Screen.Height - Height) / 2
4. Запустите программу.
На этот раз форма не только автоматически выравнивает свои размеры, но и располагается в центре экрана. Чтобы увидеть занятную «резиновую» форму, замените первую строку события Resize следующей:
Width = (Screen.Height - Height) / 2
СвойствоMaxButton
Если задать свойству MaxButton значение True, в правой части заголовка формы появляется стандартная кнопка развертывания; Если вы не хотите, чтобы пользователь мог развернуть форму во весь экран, установите значение этого свойства в False.
СвойствоMinButton
Если задать свойству MinButton значение True, в правой части заголовка формы появится стандартная кнопка свертывания. Если вы не хотите, чтобы пользователь мог свернуть форму, установите значение этого свойства в False.
ПОДСКАЗКАВ некоторых ситуациях требуется, чтобы пользователь не мог изменять размеры формы, — например, если на ней находится графический объект, который должен сохранять постоянные пропорции. В таком случае установите значения свойств MaxButton и MinButton в False.
Свойство Name
Несомненно, Name — самое важное свойство в Visual Basic. Оно определяет имя, по которому Visual Basic опознает объект во время выполнения программы. Чтобы точно знать, для чего нужна та или иная форма, следует присвоить ей содержательное имя и снабдить его префиксом frm. Если взглянуть на приложение Hello World из урока 1, вы заметите, что форме присвоено имя frmHelloWorld. Хотя в этом конкретном приложении содержательное имя не имеет особого значения, представьте себе программу с 20 или 30 формами! Наверное, вам не захочется вспоминать, что означает имя Form17 или Form20; с именами типа frmLogon или frmChangePassword работать значительно приятнее. Содержательные имена упрощают работу с формами и элементами в программе.
В уроке 3 вы познакомитесь с трехбуквенными префиксами, с которых желательно начинать имена переменных.
Свойство ScaleMode
Хотя значения свойств Height, Width, Left и Тор обычно измеряются в твипах, вы можете выбрать другую единицу измерения для любого элемента, находящегося
на форме. Если вы предпочитаете задавать размеры и положение кнопок в более привычных единицах— пикселях, установите значение свойства ScaleMode формы в 3 - Pixel.
Свойство ShowInTaskbar
Интересное свойство, которое позволяет убрать форму из панели задач. Если ваше приложение должно работать в системной панели (небольшой прямоугольник в правой части панели задач) или вы просто не хотите, чтобы пользователь видел вашу программу, задайте этому свойству значение False. Это можно сделать во время выполнения программы при обработке события Load для формы:
Private Sub Form_Load()
ShowInTaskBar = False
End Sub
Свойство Width
Свойство определяет ширину формы в твипах. Оно аналогично Height и обычно используется в сочетании с ним.
СвойствоWindowState
Свойство WindowState определяет состояние формы при запуске. Существует три допустимых значения, перечисленных в следующей таблице.
Значение | Тип | Действие |
Normal | Форма открывается в нормальном состоянии | |
Minimized | Форма открывается, но в свернутом состоянии | |
Maximized | Форма разворачивается на весь экран |
Настройка свойств формы
Значения многих свойств можно задавать как в режиме выполнения, так и в режиме конструирования. Некоторые свойства устанавливаются только в режиме конструирования (например, BorderStyle), а некоторые свойства можно задавать и читать только в режиме выполнения. Свойства, доступные только в режиме выполнения (например, hWnd), не отображаются в окне свойств в режиме конструирования.
ПРИМЕЧАНИЕВ режиме конструирования значения свойств изменяются в окне свойств, а в режиме выполнения задаются из программы.
Свойство Caption — одно из тех свойств, которые легко изменить в режиме выполнения. Приведу небольшой пример: строка «Привет» в заголовке формы здесь заменяется строкой «Пока». Впоследствии мы расширим эту программу и научимся задавать названия для отдельных объектов на форме.
1. Создайте новый проект (File > New Project) и измените значение Form1 свойства Name в окне свойств на frmForm1. Кроме того, установите значение свойства
Caption в Привет.
2. Дважды щелкните на элементе-кнопке в панели элементов, чтобы разместить на форме кнопку. Задайте для свойства Name значение cmdHello, а для свойства Caption — значение &Не11о.
3. Дважды щелкните на кнопке, чтобы открыть окно программы с процедурой cmdHello_Click. Добавьте в процедуру следующий фрагмент (также см. рис. 2.2):
If frmForm1.Caption = "Привет" Then
frmForm1.Caption = "Пока"
Else
frmForm1.Caption = "Привет"
End If
ПРИМЕЧАНИЕОператоры If-Then-Else позволяют принимать решения в программах. Если условие If истинно, то выполняется действие Then, иначе выполняется Else. Логика и последовательность выполнения программы подробно рассматривается в уроке 6.
Puc. 2.2. Добавление нового фрагмента в процедуру
4. Запустите приложение (Run > Start) и нажмите кнопку.
Приведенный выше фрагмент проверяет текущее значение свойства Caption формы. Как видно из рис. 2.3, если на момент нажатия кнопки оно равно "Привет", то оно заменяется на "Пока". В противном случае (то есть в условии Else) ему снова присваивается строка "Привет".
Рис. 2.3. Изменение свойства Caption
Новый вариант программы
В следующем примере мы сделаем шаг вперед. Двойным щелчком на кнопке откройте окно программы с процедурой Click. Отредактируйте процедуру так, чтобы она приняла следующий вид:
If frmForm1.Caption = "Привет" Then
frmForm1.Caption = "Пока"
cmdHello.Caption = "&Привет"
Else
frmForm1.Caption = "Привет"
cmdHello.Caption = "&Пока"
End If
ПРИМЕЧАНИЕПри задании строковых свойств в программе не забывайте за-ключать их в кавычки. Тем самым вы сообщаете компилятору, что указываете фактическое значение, а не ссылаетесь на имя другой переменной. Если значение строкового свойства задается в окне свойств, кавычки не нужны.
Исправление ошибки
Как видно из рис. 2.4, наша процедура теперь содержит две дополнительные строки, которые задают значение свойства Caption для кнопки в режиме выполнения:
cmdHello.Caption = "&Привет"
cmdHello.Caption = "&Пока"
Если вы работаете в Windows 95, проследите за изменением текста кнопки на панели задач в соответствии с текущим названием формы. Кроме того, похоже, в нашем приложении допущена ошибка — при запуске на кнопке появляется текст «Привет», хотя вместо него должно быть написано «Пока». Разумеется, проблему можно решить, просто изменяя свойство Caption в режиме конструирования, но мы пойдем другим путем.
Эта маленькая ошибка исправляется следующим образом:
1. Дважды щелкните на форме в конструкторе, чтобы загрузить окно программы с процедурой Form_Load.
2. Добавьте в процедуру следующий оператор (между строками Private Sub и End Sub), как показано на рис. 2.5:
cmdHello.Caption = "&Пока"
Рис. 2.4. Работа со свойством Caption
Рис. 2.5. Изменение процедуры Load
3. Запустите приложение (Run > Start) — на этот раз все работает правильно.
Что же произошло? Мы воспользовались одним из событий, связанных с формой, и изменили свойство элемента в режиме выполнения программы. Давайте рассмотрим некоторые из этих событий. Не обращайте внимания на префикс Private процедуры Form_Load — его смысл станет понятен из урока 4.
События форм
Прежде чем рассматривать события, связанные с формами, необходимо выяснить, что же такое событие. Программы в операционной системе Windows управляются событиями. Другими словами, системные события используются для обработки внешних условий. События возникают в результате получения сообщений. Каждый раз, когда вы нажимаете кнопку, перемещаете мышь, изменяете размеры формы и т. д., Windows генерирует сообщение, описывающее ваши действия, и помещает его в очередь сообщений программы. Из очереди сообщение доставляется соответствующему объекту, например форме, а та генерирует соответствующее событие. Вы можете написать свой собственный фрагмент программы, в котором объект будет реагировать на событие именно так, как вам нужно. В этом и последующих уроках мы поближе познакомимся с событиями. Чем больше вы программируете, тем больше узнаете о событиях. Ниже приведен перечень событий, связанных с формами.
Activate | KeyDown | LostFocus | OLESetData |
Click | KeyPress | MouseDown | OLEStartDrag |
DblClick | KeyUp | MouseMove | Paint |
Deactivate | LinkClose | Mousellp | QueryUnload |
DragDrop | LinkError | OLECompleteDrag | Resize |
DragOver | LinkExecute | OLEDragDrop | Terminate |
GotFocus | LinkOpen | OLEDragOver | Unload |
Initialize | Load | OLEGiveFeedback |
Лишь немногие события (как, впрочем, и свойства) используются достаточно часто. В таблице они выделены жирным шрифтом. С большинством событий приходится сталкиваться лишь при разработке очень сложных приложений. Чтобы просмотреть события, связанные с формой, в режиме конструирования, дважды щелкните на ней — откроется окно программы. Текущая форма автоматически выбирается в списке Object, поэтому вам остается лишь раскрыть связанный с ней список Ргос (рис. 2.6):
Рис. 2.6. Список событий, связанных с формой