назад | содержание | вперед

Глава 8. Использование стандартных элементов управления Visual Basic.

В главе 3 мы познакомились с наиболее часто используемыми элементами управления Visual Basic и их основными свойствами. Продолжим изучение этих элементов, а также рассмотрим стандартные элементы управления Microsoft и их использование при создании приложений.

Метка

Как уже было сказано в главе 3, для размещения в форме текстовой информации, которая не может быть изменена пользователем приложения, используется элемент управления Label (Метка). Рассмотрим более подробно его свойства. Откройте окно свойств Properties данного объекта. Для этого выделите его и выберите в контекстном меню команду Properties (Свойства).

Текст метки задается свойством caption. Он может быть установлен в окне Properties или программно. Шрифт текстовой информации определяется свойством Font (Шрифт). Для выбора шрифта в окне свойств установите курсор в данное свойство и нажмите кнопку с тремя точками в правом столбце свойства. Открывается диалоговое окно Выбор шрифта (рис. 8.1), содержащее три списка, позволяющих указать наименование, начертание и размер шрифта.

Используя свойства ForeColor и Backcolor, можно задать цвет текстовой информации и цвет фона элемента управления. Свойство BorderStyle (Стиль рамки) определяет тип обрамления вокруг объекта Label, позволяя оформить надпись в виде текстового поля. Для этого вместо используемого по умолчанию значения None необходимо выбрать для свойства значение Fixed Single.

Свойство Appearance позволяет придать тексту некоторую объемность.

Свойство Alignment (Выравнивание) определяет выравнивание текста в элементе управления по правому, левому краю или по ширине. Если информация в объекте размещена на нескольких строках, то выравнивание осуществляется на каждой строке.

Рис. 8.1. Диалоговое окно Выбор шрифта

Оформление надписей в элементе управления Label меняется в зависимости ОТ значения СВОЙСТВ Alignment, Appearance И BorderStyle (рис. 8.2).

Рис. 8.2. Оформление надписей

Текст, задаваемый объектом Label, может иметь достаточно большой размер и занимать несколько строк. Максимальное количество его символов — 65528. Задать размеры надписи можно с помощью следующих средств:

Первые три способа задания размера текстового объекта удобны в тех случаях, когда он имеет небольшой конкретно заданный размер. Но хотя пользователь приложения не может изменять текст, отображаемый с помощью объекта Label, его можно изменять программно. В этом случае точный размер текстового объекта заранее не известен, и для задания его размера удобно использовать свойства Autosize и wordwrap. Рассмотрим их более подробно.

Свойство AutoSize

Свойство Autosize может иметь два значения. При установке значения False размер объекта остается постоянным и не зависит от длины заданного свойством caption текста. Если длина текста превышает длину объекта Label, часть информации, не поместившаяся в объект, будет не видна. При установке для свойства Autosize значения True длина объекта устанавливается таким образом, чтобы в нем поместилась задаваемая свойством caption текстовая информация.

Свойство Wordwrap

Свойство Wordwrap аналогично свойству Autosize, но в данном случае изменяется высота объекта, а ширина остается неизменной. При установке для данного свойства значения False размер объекта Label может изменяться только в горизонтальном направлении. Если значение свойства wordwrap равно True, размеры объекта Label будут увеличиваться в вертикальном направлении вниз, пока не поместится весь текст. При этом осуществляется автоматический перенос слов. В табл. 8.1 указаны размеры текстового объекта в зависимости от значения свойств wordwrap и Autosize.

Таблица 8.1. Значения свойств wordwrap и Autosize

Значения свойств

Размер объекта Label

WordWrap= False AutoSize= False

Объект Label имеет первоначально заданные для него размеры

WordWrap= True AutoSize= False

Объект Label имеет первоначально заданные для него размеры

Wordwraps False AutoSize= True

Если информация, заданная свойством Caption, не помещается в объекте, изменяется размер поля в горизонтальном направлении при неизменной высоте

Wordwraps True AutoSize= True

Если информация, заданная свойством caption, не помещается в объекте, изменяется размер поля в вертикальном направлении при неизменной ширине


 

Совет

Свойства AutoSize и Wordwrap удобно использовать для надписей, размеры которых могут изменяться в процессе выполнения формы. Чтобы при изменении размера объекта в вертикальном направлении не изменилась его ширина, необходимо сначала установить значение True для свойства Wordwrap, и лишь затем аналогичное значение для свойства AutoSize.

Свойство UseMnemonic

Свойство UseMnemonic элемента управления Label позволяет определить, как будет интерпретироваться символ амперсанда (&), размещенный в свойстве caption. Если установлено значение True, то амперсанд из текста удаляется, а символ, перед которым он расположен, подчеркивается. Эта возможность применяется для определения клавиш быстрого доступа. При использовании метки в качестве клавиши быстрого доступа пользователь может комбинацией клавиш <А11>+<подчеркнутая клавиша в метке> устанавливать фокус на элемент управления, следующий по порядку для клавиши <ТаЬ> за меткой.

Рассмотрим такой пример. В форме расположено несколько элементов управления. Среди них имеется текстовое поле, в которое вы хотите перейти нажатием клавиши быстрого доступа. В этом случае выполните следующие действия:

1. Создайте метку для текстового поля.

2. Откройте окно свойств Properties метки.

3. Выделите свойство Caption и в текст метки перед символом, который вы хотите использовать в качестве клавиши быстрого доступа, поместите символ амперсанда.

4. С помощью свойства Tabindex метки и текстового поля, установите для метки значение на единицу меньшее, чем у текстового поля.

Замечание

Если элемент управления имеет свойство Caption (например, элемент CheckBox), то для задания клавиши быстрого доступа необходимо использовать его собственное свойство.

Текстовое поле

Элемент управления TextBox, размещенный в форме, служит для ввода пользователем информации во время работы приложения или отображения информации, задаваемой свойством Text программно или при разработке. Объект TextBox, так же как и метка, отличается большим набором свойств. Рассмотрим их более подробно.

Свойства, определяющие оформление текста

Для задания стиля рамки текстового поля применяется свойство Borderstyle (Стиль рамки). Оно содержит два значения. По умолчанию используется значение Fixed Single, при котором поле выделено рамкой. При установке значения None рамка вокруг поля отсутствует. Свойство Appearance позволяет придать объемность текстовому полю, имеющему рамку.

Свойства Backcolor и ForeColor позволяют соответственно задать цвет фона и цвет текста, размещаемого в элементе управления TextBox.

С помощью свойства Alignment (Выравнивание) можно задать вариант выравнивания информации в поле: по центру, по левому или правому краю.

Для задания наименования, размера и начертания шрифта, отображаемого в текстовом поле, используется свойство Font (Шрифт).

Многострочные текстовые поля

По умолчанию предполагается, что текстовое поле служит для ввода одной строки текста. Свойства Multi-Line и ScrollBar элемента управления TextBox позволяют настроить объект таким образом, что он будет использоваться для ввода нескольких строк или даже большого блока текстовой информации (табл. 8.2).

Таблица 8.2. Предназначение свойств MultiLine и ScrollBar

Свойство

Назначение

MultiLine

Определяет способ отображения поля. При установленном значении True текст автоматически переносится по словам на несколько строк. При вводе информации в поле для перехода на новую строку необходимо использовать клавишу <Enter>

ScrollBar

Данное свойство используется, если свойство MultiLine имеет значение True и размер поля не позволяет отобразить заданный в свойстве Text текст. Свойство может принимать одно из следующих значений:

0-None — полоса прокрутки отсутствует 1-Horizontal — горизонтальная полоса прокрутки 2-Vertical — вертикальная полоса прокрутки 3-Both — горизонтальная и вертикальная полосы прокрутки


 

Вид текстового поля меняется в зависимости от значения свойств MultiLine и ScrollBar (рис. 8.3).

Рис. 8.3. Вид текстового поля в зависимости от значения свойств MultiLine и ScrollBar

Управление текстом в объекте TextBox

Программа Visual Basic позволяет во время выполнения программы управлять текстом, отображаемым в текстовом поле, с помощью свойств SelStart, SelLength И SelText.

В случае, когда фокус впервые переходит на текстовое поле, курсор по умолчанию устанавливается слева от находящегося в поле текста. В результате ввода или просмотра информации курсор может перемещаться в пределах поля. При последующем возвращении фокуса на поле курсор устанавливается в то место, куда он был установлен в последний раз.

Используя свойство Seistart объекта TextBox, можно указать место размещения курсора в поле при установке фокуса. Значение 0 соответствует крайней левой позиции. Свойство SelLength задает ширину точки ввода. По умолчанию она равна 0, т. е. в том месте, где курсор установлен, можно начинать ввод символов, не удаляя расположенной в нем информации. Рассмотрим следующий пример. Необходимо, чтобы в форме, предназначенной для ввода данных, размещенные данные замещались новой информацией. Для этого при установке фокуса на поле символы должны выделяться инверсным цветом (рис. 8.4) и при вводе данных удаляться. Свойство SelText позволяет задать текст, который заменит во время выполнения программы выделенный фрагмент.

Рассмотрим пример создания небольшого приложения, содержащего форму, представленную на рис. 8.4. Форма содержит заголовок и текстовое поле, в котором при установке фокуса выделяется размещенный в нем по умолчанию текст. При создании приложения будем использовать рассмотренные нами элементы управления Label и TextBox.

Рис. 8.4. Программное выделение информации, размещенной в текстовом поле

1. Для создания нового приложения в меню File (Файл) выберите команду New Project (Новый проект). Открывается окно Project с расположенной в нем новой формой.

2. Чтобы разместить в форме заголовок, нажмите кнопку Label на панели элементов управления. Затем установите курсор в верхнюю часть формы и нарисуйте рамку требуемого размера.

3. Откройте окно свойств. Для этого щелкните правой кнопкой мыши на созданном объекте и выберите в контекстном меню команду Properties.

4. Выделите свойство caption (Надпись) и введите в правом столбце текст заголовка.

5. Чтобы сохранить первоначальную ширину заголовка и расположить текст в две строки, установите для свойства wordwrap значение True.

6. Для задания точной ширины заголовка присвойте свойству Autosize значение True.

7. По умолчанию текст заголовка выровнен по левому краю. Чтобы его отцентрировать, выделите свойство Alignment (Выравнивание). Затем в правом столбце нажмите кнопку раскрытия списка и выберите из него значение Center.

8. Для задания используемого в оформлении заголовка наименования шрифта, его размера и начертания воспользуйтесь свойством Font (Шрифт). Нажмите в правом столбце свойства кнопку с тремя точками и в открывшемся диалоговом окне Выбор шрифта установите необходимые параметры.

9. Разместим теперь в форме текстовое поле. Нажмите на панели элементов управления кнопку TextBox, установите курсор в форму и нарисуйте рамку требуемого размера.

10. Чтобы задать текст, отображаемый в текстовом поле при выполнении формы, выделите свойство Text и введите в правом столбце требуемый текст, например, Текстовое поле.

11. Так как мы хотим, чтобы при установке фокуса на текстовое поле в нем выделялся размешенный текст, необходимо создать процедуру обработки события. Для открытия окна редактора кода дважды щелкните мышью на объекте TextBox.

12. В окне редактора кода из списка Object выбрано значение Text1, указывающее наименование текстового поля. Выберите из правого списка Procedure значение GotFocus, позволяющее задать процедуру обработки события получения текстовым полем фокуса.

13. В области создания процедуры между операторами private sub Text1_Got Focus () и End Sub расположите следующие команды:

Text1.SelStart = 0

Text1.SelLength = Len(Text1.Text)

Первая команда задает начальное положение выделяемого в поле текста. Вторая команда процедуры задает длину выделяемого фрагмента текста. Используемая в ней функция Len вычисляет длину текста, размещенного в текстовом поле и заданного свойством Text. На рис. 8.5 показано окно редактора кода с введенными командами.

Рис. 8.5. Окно редактора кода

Совет

Если вы хотите во время выполнения программы заменить выделенную в текстовом поле информацию другим текстом, то можете использовать свойство SelText и вставить в процедуру следующую команду: Text1.SelText = "Информация, вводимая с помощью свойства SelText". В кавычках располагается размещаемый в текстовом поле новый текст.

14. После ввода текста процедуры закройте окно редактора кода, выбрав команду Close системного меню окна или нажав кнопку Закрыть, расположенную в верхнем правом углу заголовка окна.

15. Запустите программу на выполнение, выбрав в меню Run команду Start или нажав клавишу <F5>. Результат представлен на рис. 8.4. Информация в текстовом поле выделена, и вы можете сразу же вводить на ее место новую.

Нередактируемые текстовые поля

Как мы уже говорили, текстовые поля, в отличие от меток, предназначены для ввода информации пользователями приложения. Но в том случае, если вы хотите, чтобы данные просматривались, но не редактировались, то можете воспользоваться свойством Locked. При установке значения True пользователь сможет просматривать данные без возможности их редактирования. В этом случае изменение информации в текстовом поле может выполняться только программно.

Проверка правильности ввода данных

При работе с текстовыми полями возникает необходимость проверки вводимых пользователем данных. В Visual Basic для этих целей предназначено событие validate. Например, размещенное в форме поле служит для ввода даты и вы хотите, чтобы при вводе информации в ином формате появлялось соответствующее предупреждение. Для этого выполните следующие действия:

1. Разместите в форме текстовое поле.

2. Для задания процедуры обработки события validate откройте окно редактора кода, дважды щелкнув кнопку мыши на текстовом поле.

3. Из списка Object по умолчанию выбрано значение Text1, указывающее наименование элемента управления TextBox. Из правого списка Procedure выберите значение Validate, позволяющее задать процедуру проверки. вводимых в поле данных.

4. Создайте следующую процедуру:

Private Sub Text1_Validate

If Not IsDate(Textl) Then MsgBox "Вводимые данные должны быть датой"

End Sub

5. Закройте окно редактора кода.

6. Разместите в форме еще одно текстовое поле, которое будет использовано в качестве объекта, на который можно перевести фокус после ввода информации в первое поле.

7. Запустите приложение на выполнение.

8. Введите в созданное поле информацию в каком-либо произвольном формате, например текстовую, и нажмите клавишу <ТаЬ> для перемещения фокуса на второе поле. На экране появится предупреждение, аналогичное представленному на рис. 8.6.

Рис. 8.6. Предупреждение, появляющееся при вводе данных, не отвечающих заданным условиям

Использование текстового поля для ввода пароля

Текстовое поле в Visual Basic характеризуется двумя свойствами, позволяющими использовать их при создании полей, предназначаемых для ввода пароля:

На рис. 8.7 показана форма, в которой в качестве символа, отображаемого в текстовом поле при вводе пароля, используется символ звездочки.

Рис. 8.7. Форма, предназначенная для ввода пароля

Подсказка

Visual Basic позволяет с помощью свойства ToolTipText (Текст подсказки) создавать текст краткого пояснения, появляющийся ниже курсора, когда он установлен на поле (рис. 8.8). Чтобы задать текст пояснения к текстовому полю, введите текст подсказки в правый столбец свойства.

Рис. 8.8. Свойство ToolTipText позволяет задать подсказку, появляющуюся под курсором

Кнопки управления

В главе 3 вы познакомились с основными свойствами объекта, называемого кнопкой управления. Это один из наиболее часто используемых элементов управления. Рассмотрим еще несколько свойств, характеризующих данный элемент.

Клавиши быстрого доступа

Для кнопки управления можно задать клавиши быстрого доступа, что весьма удобно пользователям, использующим при работе с формой только клавиатуру. В этом случае для нажатия кнопки, размещенной в форме, достаточно будет нажать комбинацию клавиш <Alt>+< подчеркнутая клавиша в названии кнопки> Печать. Чтобы задать клавишу быстрого доступа, необходимо при вводе названия кнопки в поле свойства Caption перед соответствующей буквой наименования кнопки расположить амперсанд (&). В названии кнопки эта буква будет выделена подчеркиванием.

Замечание

Если вы не хотите, чтобы символ амперсанда интерпретировался как назначение клавиши быстрого доступа, вам необходимо поместить два символа амперсанда.

Свойства Default и Cancel

Одну из кнопок, размещаемых в форме, можно сделать кнопкой по умолчанию, т. е. помещать в нее фокус при запуске формы на выполнение. Для этого используется свойство Default. В этом случае для нажатия данной кнопки достаточно нажать клавишу <Enter>. Чтобы сделать кнопку используемой по умолчанию, необходимо для свойства Default установить значение True.

Используя свойство cancel кнопки, можно сделать ее кнопкой отмены. Если для свойства Cancel установлено значение True, кнопка будет выбираться при нажатии клавиши <Esc>.

Замечание

При присвоении свойствам Default или Cancel кнопки значения True, аналогичные свойства других размещенных в форме кнопок получат значения False.

Стиль оформления кнопки

Для управления внешним видом кнопки используется свойство Style (Стиль). Оно содержит два значения. По умолчанию установлено значение Standard, предполагающее, что кнопка будет содержать текст, задаваемый свойством caption. Вы можете использовать в форме графические кнопки. В этом случае вместо текстовой надписи на кнопке размещается графическое изображение, задаваемое свойством picture, а свойство Style должно иметь значение Graphical.

Для задания графического изображения, помещаемого на кнопке, выделите свойство picture и нажмите кнопку, расположенную в правом столбце. В результате откроется диалоговое окно Load Picture (рис. 8.9), используя которое вы можете выбрать на диске файл, содержащий изображение.

Рис. 8.9. Диалоговое окно Load Picture, предназначенное для выбора изображения, помещаемого на кнопке

Помимо вышеперечисленных свойств, для управления видом графической кнопки используются также свойства Disabledpicture и DownPicture. Свойство DisabledPicture позволяет задать графическое изображение неактивной кнопки, а DownPicture — графическое изображение, отображаемое на кнопке при ее нажатии.

Способы выбора кнопки управления

Существует несколько способов выбора размещенной в форме кнопки управления при выполнении приложения. Наиболее очевидный — это щелкнуть ее кнопкой мыши. Второй способ вам, вероятно, также знаком.

Он состоит в следующем: перемещая фокус между элементами управления формы нажатием клавиши <ТаЬ>, установите его на кнопку управления и затем нажмите клавишу <Enter> или <Spacebar>.

Кроме того, существует еще три способа выбора кнопки управления, задаваемые при ее создании:

Список ListBox

Элемент управления ListBox, размещенный в форме, представляет собой список, из которого пользователь может выбрать одно из предложенных значений. Значения в списке могут размещаться в одну или несколько колонок. Количество колонок задается свойством Columns (Колонки). В том случае, если элементы списка не помещаются в выделенную для них в форме область, появляются полосы прокрутки, позволяющие просмотреть весь список.

Добавление элементов в список

Элементы в список могут добавляться во время разработки и программно с использованием метода Additem. При формировании списка во время разработки в свойстве List вручную задается весь необходимый список. Данные не обязательно вводить в алфавитном порядке, т. к. их можно упорядочить, установив для свойства Sorted (Сортировка) значение True. В этом случае вновь вводимые элементы списка также будут располагаться в алфавитном порядке.

Предупреждение

Нежелательно использовать сортировку, если данные в список будут добавляться методом Additem с использованием параметра index.

Для добавления элементов в список программным способом предназначен метод AddItem, имеющий следующий синтаксис:

NameList.AddItem выражение [, index]

где:

Например, для программного формирования списка городов вам необходимо задать следующую процедуру:

Private Sub Form Load()

List1.AddItem "Москва"

List1.AddItem "С.Петербург"

List1.AddItem "Псков"

List1.AddItem "Новгород"

List1.AddItem "Чебоксары" End Sub

На рис. 8.10 показано окно редактора кода, содержащего процедуру формирования списка городов.

Рис. 8.10. Окно редактора кода с процедурой, формирующей список

Города в списке располагаются в том порядке, в котором они заданы в процедуре. Например, если строку кода List1.Additem "Чебоксары" заменить строкой

List1.Additem "Чебоксары", 0

то в списке городов Чебоксары будут помещены в первую позицию (рис. 8.11).

Рис. 8.11. Использование параметра index позволяет задать порядок элементов в списке

Удаление элементов из списка

Visual Basic позволяет программно удалять элементы из списка с помощью метода Removeitem, имеющего следующий синтаксис:

NameList.RenioveItem index

где NameList — наименование списка, задаваемое свойством Name, a index — порядковый номер удаляемого элемента в списке.

Например, чтобы удалить из созданного нами в предыдущем примере списка List1 второй элемент, необходим следующий программный код:

List1.Removeitem 1

Совет

Чтобы удалить все элементы из списка, можно использовать метод clear (Очистить). В этом случае программный код выглядит так: List1.Clear.

Свойства ListCount и Listlndex

Свойство ListCount позволяет определить количество элементов в списке. Это значение можно использовать, например, в том случае, если вы хотите обрабатывать элементы списка в цикле. Свойство Listlndex показывает номер выбранного элемента. При выборе первого элемента списка значение свойства равно 0 исходя из того, что нумерация элементов начинается с 0. Если выбран пятый элемент, значение свойства Listlndex будет равно 4.

Рассмотрим пример использования свойства Listindex. В форме, содержащей список ListBox, разместим текстовое поле, в котором будет отображаться выбранное из списка значение (рис. 8.12). Откройте окно редактора кода списка и для события click задайте следующую процедуру:

Private Sub List1_Click()

Text1.Text = List1.List(List1.Listindex)

End Sub

Запустите форму на выполнение. Выбираемое из списка значение отображается в расположенном рядом с ним текстовом поле.

Замечание

Свойства ListCount и Listindex доступны только при выполнении.

Рис. 8.12. Использование свойства Listindex для просмотра выбранного из списка элемента

Стиль оформления списка

Для управления внешним видом списка используется свойство style (Стиль). Оно содержит два значения: Standard и CheckBox. По умолчанию используется значение Standard, которое мы уже рассматривали ранее. При установке для свойства style значения CheckBox элементы списка оформлены в виде флажков. На рис. 8.13 показаны два вида списков в зависимости от значения свойства Style.

Рис. 8.13. Два стиля оформления списков в зависимости от значения свойства Style

Совет

Для изменения значения свойства Style во время выполнения приложения можно использовать константы Visual Basic vbListBoxStandard и vbListBoxCheckBox.

Выбор нескольких элементов из списка

Программа Visual Basic позволяет использовать списки, предоставляющие пользователю выбирать из него несколько элементов. Для создания таких списков предназначено свойство Multiselect (Множественный выбор). Оно может принимать значения, представленные в табл. 8.3.

Таблица 8.3. Значения свойства Multiselect

Значение свойства

Описание

0-Non (Нет)

Стандартный список, используемый по умолчанию. Позволяет выбирать одно значение

1-Simple

(Простой множественный выбор)

Разрешен выбор нескольких элементов щелчком мыши или нажатием клавиши <Spacebar> (Пробел). Для отмены выбора необходимо щелкнуть мышью или нажать клавишу <Spacebar> еще раз

2-Extended

(Расширенный множественный выбор)

Разрешен выбор нескольких элементов с помощью способа, используемого в Windows. Для выбора элементов, расположенных подряд, необходимо при нажатой клавише <Shift> выбрать первый элемент из выбираемых, а затем последний. При этом будут выбраны все размещенные между ними элементы. Для выбора элементов, расположенных не по порядку, необходимо нажать клавишу <Ctrl> и, удерживая ее нажатой, выделить требуемые элементы списка


 

Для обработки множественного выбора нельзя использовать свойство Listindex, применяемое при работе с обычными списками. Выбор нескольких элементов списка фиксируется в свойстве Selected, являющимся массивом, размерность которого равна количеству элементов в списке (определяется свойством ListCount). Выбранному элементу списка соответствует значение True соответствующего элемента свойства selected, а остальным — False.

Рассмотрим пример использования свойства Selected. Разместим в форме два списка. В первый список введем элементы с использованием свойства List. Список элементов во втором списке будет формироваться при перемещении на него фокуса после выбора элементов первого списка. Таким образом, второй список будет содержать выбранные в первом списке элементы. Для создания приложения выполните следующие действия:

1. Разместите в форме два списка с помощью кнопки ListBox на панели элементов управления.

2. Используя свойство List первого списка, введите элементы списка.

3. Чтобы разрешить выбор из первого списка нескольких элементов, установите для свойства Multiselect значение 1-Simple.

4. Теперь необходимо задать процедуру формирования элементов второго списка при перемещении на него фокуса. Для этого дважды щелкните мышью на втором списке.

5. В открывшемся окне редактора кода из списка Procedure выберите событие GotFocus (Получение фокуса) и введите следующий код:

Private Sub List2_GotFocus()

List2.Clear

For i = 0 To List1.ListCount — 1

If List1.Selected(i) Then List2.Addltem (List1.List (i))

Next

End Sub

На рис. 8.14 представлен полученный результат.

Рис. 8.14. Отображение выбранных значений во втором списке

Списки типа ComboBox

Списки типа СоmbоВох называют раскрывающимися или полями со списком. Оба этих названия верны. Раскрывающимися их называют потому, что для выбора значения из списка, имеющего установленные по умолчанию свойства, сначала необходимо открыть список, нажав кнопку со стрелкой, расположенную с правой стороны поля ввода. Второе название поле со списком они получили потому, что список типа ComboBox совмещает функции списка и поля ввода. Иными словами, можно не только выбирать данные из списка, но и вводить в поле ввода в верхней части новые значения. Использование списков ListBox дает возможность выдавать большой объем информации, экономя при этом место в форме.

Стилем оформления списка типа comboBox управляет свойство style. Оно может принимать значения, представленные в табл. 8.4.

Таблица 8.4. Значения свойства Style

Значение свойства

Описание

0-Dropdown Combo

Стиль, используемый по умолчанию. Данный список показан на рис. 8.15 слева. Пользователь может ввести значение в текстовое поле, расположенное в верхней части списка, либо открыть список, нажав кнопку с направленной вниз стрелкой с правой стороны поля, и выбрать требуемое значение. Выбранное значение переносится в текстовое поле

1-Simple Combo

Вид данного списка показан на рис. 8.15 в центре. При данном значении список отображается в форме в открытом состоянии. Если все элементы в нем не помещаются, появляется вертикальная полоса прокрутки. Пользователь может ввести значение в текстовое поле, располагающееся в верхней части списка, либо выбрать требуемое значение, которое будет перенесено в текстовое поле

2-Dropdown List

Вид данного списка показан на рис. 8.15 справа


 

Рис. 8.15. Стили оформления списка типа ComboBox

Замечание

Для установки значения Style можно использовать также внутренние константы Visual Basic vbComboDropDown, vbComboSimple, И vbComboDropDownLis; соответственно.

Добавление элементов в список типа ComboBox

Элементы в список типа ComboBox могут добавляться во время разработки с помощью свойства List и программно с использованием метода Additem так же, как в список типа ListBox. При формировании списка во время разработки в свойстве List вручную задается весь необходимый список. Данные, отображаемые списком, можно упорядочить, установив для свойства Sorted (Сортировка) значение True.

Для добавления элементов в список программно используется метод Additem, имеющий приведенный ниже синтаксис:

NameList.AddItem выражение [, index]

где:

Обычно для программного формирования списка используется процедура Form_Load обработки события. Например, чтобы программно сформировать элементы для списка типа соmbоВох, содержащего список городов, вам достаточно задать следующую процедуру:

Private Sub Form Load()

Combo1.Additem "Москва"

Combo1.Additem "С.Петербург"

Combo1.Additem "Псков"

Combo1.Additem "Новгород"

Combo1. Additem "Чебоксары"

End Sub

Если при формировании списка вы не используете параметр index, элементы в списке располагаются в том порядке, в котором они заданы в процедуре. Например, если к приведенной ниже процедуре добавить строку кода

Combo1.AddItem "Киев",0

то в списке городов Киев будет помещен в первую позицию, а все остальные элементы смещены на одну позицию вниз.

Удаление элементов из списка типа СоmЬоВох

Удаление элементов из списка типа СотЬоВох осуществляется с помощью метода Removeitem, имеющего следующий синтаксис:

NameList.Removeltem index

где NameList — наименование списка, задаваемое свойством Name, a index — порядковый номер удаляемого элемента в списке.

Например, для удаления из списка, имеющего наименование combol, первого элемента, можно использовать следующий код:

Combo 1. RemoveItem 0

Для удаления всех элементов из списка можно использовать метод clear (Очистить). В этом случае программный код выглядит так: combol. clear.

Доступ к элементам списка

Для получения доступа к выбранному элементу списка типа comboBox можно использовать свойство Text. Значением этого свойства является введенное в текстовое поле списка (для списков, у которых значение style равно 0-Dropdown Combo или 1-Simple Combo) или выбранное из списка значение.

Чтобы получить доступ к элементам списка, используйте свойство List. Значения этого свойства являются массивом, размерность которого равна значению свойства ListCount, то есть количеству элементов в списке. Например, значение первого элемента списка будет равно combol. List (0), второго — Combo1.List (1) и т.д.

Для определения положения элемента в списке типа ComboBox можно использовать свойство Listindex. Например, при выборе первого элемента списка значение свойства Listindex будет равно 0.

Замечание

Значение свойства Listindex равно -1, если из списка не выбран элемент, а также если элемент в текстовое поле списка введен пользователем вручную.

Для получения индекса последнего добавленного в список элемента можно использовать свойство Newindex (Новый индекс).

Линии и контуры

Visual Basic позволяет размещать в форме линии, прямоугольники, скругленные прямоугольники, круги, эллипсы, используемые для объединения в группу схожих по смыслу объектов и улучшения внешнего вида формы.

Линия

Для добавления в форму линии используется кнопка Line (Линия) на панели элементов управления. Установите указатель мыши в то место, где должна начинаться линия, и, не отпуская кнопку мыши, перемещайте его до получения линии нужной длины.

Свойство Borderwidth (Ширина границы) позволяет задать толщину линии. Для изменения толщины, заданной по умолчанию, введите в правый столбец свойства число, которое будет определять толщину линии.

Для изменения размеров линии и ее положения можно использовать мышь и клавиатуру аналогично тому, как это делается для всех элементов управления в форме. Помимо этого, можно использовать свойства X1, X2, YI и Y2, позволяющие изменять перечисленные параметры программно. Свойства X1и YI определяют, соответственно, горизонтальное и вертикальное положение левого края линии, а свойства X2 и Y2 — правого края.

Чтобы задать цвет линии, используйте свойство BorderColor (Цвет границы).

С помощью свойства BorderStyle (Стиль границы) можно указать стиль линии, используя значения, указанные в табл. 8.5.

Таблица 8.5. Значения свойств BorderStyle

Значение

Стиль линии

0-Transparent

Линия отсутствует (имеет цвет фона)

1-Solid

Тонкая линия

2-Dash

Штриховая линия

3-Dot

Пунктирная линия

4-Dash-Dot

Штрихпунктир

5-Dash-Dot-Dot

Штрихпунктир с двойным штрихом

6-lnside Solid

Непрерывная линия


 

Типы линии в зависимости от значения свойства BorderStyie показаны на рис. 8.16. Для значения 0-Transparent линия не приводится, т. к. она все равно не видна в форме.

Рис. 8.16. Элемент управления Line

Контуры

Для добавления в форму контура предназначена кнопка Shape (Контур) на панели элементов управления. Она позволяет создавать в форме прямоугольник, квадрат, овал, окружность, прямоугольник и квадрат со скругленными углами.

Чтобы разместить в форме одну из вышеперечисленных фигур, выполните следующие действия:

1. Нажмите кнопку Shape (Контур) на панели элементов управления.

2. Установите указатель мыши в то место, где должен начинаться объект, и, не отпуская кнопку мыши, переместите указатель до получения контура требуемого размера.

3. Для придания созданному объекту требуемой формы, установите одно из следующих значений свойства shape, представленных в табл. 8.6.

Таблица 8.6. Значения свойства shape

Значение свойства

Контур

0-Rectangle

Прямоугольник

1-Square

Квадрат

2-Oval

Овал

3-Circle

Окружность

4-Rounded Rectangle

Прямоугольник со скругленными углами

5-Rounded Square

Квадрат со скругленными углами


 

На рис. 8.17 приведены стандартные контуры, создаваемые в Visual Basic.

Совет

При создании стандартных контуров можно использовать внутренние константы Visual Basic:vbShapeRectangle, vbShapeSquare,vbShapeOval,vbShapeCircie, vbShapeRoundedRectangle И vbShapeRoundedSquare.

Рис. 8.17. Стандартные контуры

Используя свойство BackStyle, укажите, будет ли созданный объект прозрачным.

С помощью свойства Fillstyle можно задать узор заполнения, используя значения из табл. 8.7.

Таблица 8.7. Значения свойства FillStyle

Значение

Узор заполнения

0-Solid

Сплошное заполнение

1-Transparent

Нет заполнения

2-Horizontal Line

Горизонтальная штриховка

3-Vertical Line

Вертикальная штриховка

4-Upward Diagonal

Штриховка по диагонали слева направо

5-Downward Diagonal

Штриховка по диагонали справа налево

6-Cross

Горизонтально-вертикальная штриховка

7-Diagonal Cross

Штриховка по диагонали в обоих направлениях


 

Свойство FillColor позволяет задать цвет узора заполнения объекта, а свойство BackColor (Цвет фона) — цвет фона.

Свойство BorderStyle предназначено для задания стиля рамки объекта. Оно содержит те же значения, что и для линии.

Для придания контуру объемности используйте свойство SpecialEffect.

Полосы прокрутки

В Visual Basic существуют элементы управления VScrollBar и HScrollBar, называемые полосами прокрутки (рис. 8.18), для размещения в форме которых используются кнопки VScrollBar и HScrollBar на панели элементов управления. Если вы знакомы с документами программы Microsoft Word и другими программными продуктами, работающими в среде Windows, то имеете представление о полосах прокрутки. С ними мы также сталкивались при работе с многострочными текстовыми полями и списками, в которых информация не помещалась целиком в окне просмотра. Элементы управления VScrollBar и HScrollBar отличаются от полос прокрутки, встроенных в перечисленные элементы, так как существуют самостоятельно и используются для управления вводом параметра, значение которого может меняться в некотором диапазоне.

Рис. 8.18. Элементы управления

VScrollBar и HScrollBar

Размещение полосы прокрутки и настройка свойств

Основные свойства, характеризующие элементы управления типа VScrollBar и HScrollBar, представлены в табл. 8.8.

Таблица 8.8. Свойства элементов управления VScrollBar и HScrollBar

Свойство

Назначение

LargeChange, SmallChange

Задают величины, на которые будет смещаться ползунок при щелчке кнопкой мыши на полосе или стрелке прокрутки

Min, Max

Задают диапазон вводимых с помощью полосы прокрутки чисел

Value

Целое число, соответствующее положению ползунка на полосе прокрутки


 

После размещения полосы прокрутки в форме необходимо, используя свойства Min и мах, задать диапазон значений, устанавливаемых с помощью данного элемента управления. Свойство value (Значение) определяет текущее положение бегунка на полосе прокрутки. Значения данных свойств могут быть только целыми числами и лежать в диапазоне от —32768 до +32767. При этом не обязательно, чтобы значение, задаваемое свойством Min, было меньше значения свойства мах. Вы можете использовать бегунок для отображения данных от большего значения к меньшему.

Значение свойства value меняется при перемещении бегунка и щелчке мыши на полосе прокрутки или на стрелках, расположенных по краям полосы. Для задания величины, на которую будет меняться значение свойства value при щелчке мыши на стрелках, находящихся по краям полосы прокрутки, используется свойство SmallChange (Малое смещение). С помощью свойства LargeChange (Большое смещение) можно задать величину, на которую будет смещаться ползунок при щелчке кнопкой мыши на полосе прокрутки. По умолчанию оба этих свойства имеют значение 1. На практике, свойство smallchange используют для более плавного изменения значения свойства value. Для свойства LargeChange устанавливают значение, равное, примерно, 10% от диапазона изменения свойства value.

Элементы управления типа VScrollBar и HScrollBar для отображения свойства value используют следующие события:

Событие

Назначение

Change

Событие наступает после перемещения бегунка в момент отпускания кнопки мыши или после щелчка мышью в области полосы прокрутки или на кнопках с изображениями стрелок

Load формы

Позволяет получить начальное значение свойства Value при загрузке формы

Scroll

Позволяет получить значение свойства Value при перемещении бегунка до возникновения события change


 

Рассмотрим пример использования в форме полос прокрутки. Разместим в форме элемент управления shape. Затем добавим в форму элементы управления vscroliBar и HScrollBar. Значение горизонтальной полосы прокрутки будем использовать для изменения формы объекта, задаваемой свойством shape, а значение вертикальной — для задания стиля оформления контура (рис. 8.19).

Рис. 8.19. Использование элементов управления VScrollBar и HScrollBar

Выполните следующие действия:

1. Используя кнопку Shape на панели элементов управления, разместите в форме контур.

2. Разместите в форме горизонтальную и вертикальную полосы прокрутки, воспользовавшись, соответственно, кнопками HScrollBar и VScrollBar на панели элементов управления.

3. Горизонтальную полосу прокрутки будем использовать для изменения типа контура. Свойству Min присвоите значение 0, а свойству мах — значение 5, так как свойство shape (Контур) может принимать значения от О до 5.

4. Вертикальная полоса прокрутки будет служить для изменения стиля оформления контура. Свойству Min присвойте значение 0, а свойству мах — значение 6, так как свойство BorderStyle (Стиль границы) может принимать значения от 0 до 6.

5. В окне редактора кода, используя событие Change, возникающее после перемещения бегунка в момент отпускания кнопки мыши, а также после щелчка мышью в области полосы'прокрутки или на кнопках с изображениями стрелок, расположите следующий код:

Private Sub HScroll1_Change()

Shape1.Shape = HScroll1.Value

End Sub

Private Sub VScroll1_Change()

Shapel.BorderStyle = VScroll1.Value

End Sub

Запустите форму на выполнение. Перемещая поочередно движки полос прокрутки, вы сможете наблюдать, как изменяется тип контура и стиль обрамления.

Элемент управления Frame

Элемент управления Frame является контейнером и служит для объединения других элементов в группу, после чего помещенными в него объектами можно управлять как единым целым. Например, элемент управления Frame можно использовать для объединения в группу размещенных в форме и функционально связанных переключателей.

Для настройки внешнего вида элемента управления Frame применяются свойства, указанные в табл. 8.9.

Таблица 8.9. Свойства элемента управления Frame

Свойство

Назначение

Appearance

Свойство может принимать значения 0-Flat или 1-3D, задающие плоский или объемный вид рамки

BorderStyle

Определяет, будет ли вокруг группы присутствовать рамка. Может принимать значения 0-None (рамка и ее заголовок отсутствуют) и 1-Fixed Single (рамка присутствует)

Caption

Определяет текст, располагающийся в левом верхнем углу рамки. Если из свойства удалить текст, то группа будет объединена сплошной рамкой



На рис. 8.20 показано, как выглядит элемент управления Frame в зависимости от свойств объекта.

Рис. 8.20. Вид элемента управления Frame в зависимости от его свойств

 

назад | содержание | вперед

Hosting uCoz