Основные элементы управления

 

Стандартные элементы управления для работы с данными размещены в блоке инструментов (панель ToolBar) и становятся доступными пользователю при работе в режиме конструктора форм

 


Первоначально на панели размещены так называемые внутренние (intrinsic) элементы управления. Это, однако, неполный список элементов, которые входят в поставку VISUAL BASIC. Для размещения в блоке инструментов других элементов предназначена команда ProjectComponents.

7.26.1. Кнопка

 

Кнопка (CommandButton) используется для инициирования пользователем необходимых действий, которые начинают выполняться после щелчка мышью по кнопке.

Событие Click возникает:

а) при непосредственном щелчке по кнопке мышью;

б) при перемещении фокуса на кнопку с помощью клавиши Tab с последующем нажатием клавиши Enter.

Свойства:

Caption – задает название кнопки (текст на кнопке). С помощью свойства можно назначить для кнопки клавиши быстрого доступа. Для этого следует перед буквой, соответствующей желаемой клавиши поместить символ &.

Например, если задать свойству значение Ф&ормат, то кнопке будут назначена команда Alt+о, на кнопке будет выведен текст Формат.

Default - определяет, что данная кнопка активна по умолчанию. Если в форме несколько кнопок, то на одну из них можно по умолчанию поместить фокус, задав свойству Default этой кнопки значение True. Такая кнопка называется стандартной (default button). Если нажать клавишу Enter, то автоматически генерируется событие Click стандартной кнопки, независимо от того какой элемент имеет фокус (обычно это свойство имеет кнопка Ok).

Cancel – позволяет назначить кнопку отмены операции (cancel button). Для такой кнопки событие Click возникает после нажатия клавиши Esc ( обычно это свойство имеет кнопка Cancel).

Style – определяет стиль оформления кнопка. Если свойство имеет значение Standard, то на кнопку выводиться текст свойства Caption. Если свойство имеет значение Graphical – на кнопке графическое изображения, задаваемое свойством Picture.

С помощью свойств Desabled Picture и Down Picture можно задать для кнопки два графических изображения: изображение неактивной кнопки и изображение, отображаемое при нажатии кнопки.

7.26.2. Надпись

Надпись(Label) предназначена для отображения текста в форме, который пользователь не может изменить с клавиатуры. Чаще всего используется для создания подписей к другим элементам управления.

Свойства:

Caption - содержит отображаемый текст. Максимальное количество символов в тексте 65528. Размеры надписи можно задавать:

мышью или командами Shift+{¬ | ­ | ® | ¯};

свойствами Height и Width;

свойствами Autosize и WordWrap.

Autosize имеет два значения:

- значение False – размер надписи постоянный и не зависит от длины текста в свойстве Caption;

- значение True – размер надписи автоматически подстраивается под значение свойства Caption.

При этом изменение размеров элемента зависит от значения свойства WordWrap. Если значение свойства False, то размеры надписи будут увеличиваться только в горизонтальном направлении, пока весь текст не будет виден на экране. Если свойство имеет значение True, то увеличение размеров будет выполняться по вертикали. При этом будет происходить автоматический перенос слов на новую строку.

Примечание: Первоначально значение присваивается свойству WordWrap, а затем значение True свойству AutoSize.

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

поместить в текст константу vbCrLf;

1) поместить в текст символы с кодами 13 (перевод строки) и 10 (возврат каретки).

BorderStyle - способ отображения текста - с рамкой или без нее.

Fontзадает тип, гарнитуру, размер и стиль шрифта отображаемого текста.

ForeColorи BackColor задают цвет текста и фона;

Appearance определяет внешний вид: объемный (1-3d) или плоский (0 – Flat).

7.26.3. Текстовое поле (TextBox)

 

Является основным элементом управления, предназначенным для ввода данных.

События:

Change - вызывается при изменении содержимого текстового поля. Происходит каждый раз при вводе, удалении или изменении символа. Событие возникает до потери.

Пример контроля вводимых данных (ввод в текстовое поле только числового значения):

Private Sub txtNomGr_Change()

If Not IsNumeric(txtNomGr) Then

MsgBox “Вводите только цифры”

EndIf

End Sub

Validate – используется для проверки введенного в текстовое поле значения. Событие Validate возникает только в том случае, если для текстового поля свойству Causes Validation задано значение True.

Пример контроля вводимых данных (на соответствие вводимого значения заданному диапазону значений):

 

Private Sub txtNomGr_Validate(Cancel_

As Boolean)

If Val(txtNomGr.Text)<100 Or _

Val(txtNomGr.Text)>9999 Then

MsgBox “Номера групп от 100 до 9999”

EndIf

End Sub

 

Примечание: При проверке работы процедуры примера для перемещения между элементами лучше использовать клавишную команду Tab.

 

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

Первым возникает событие Validate, затем LostFocus.

GotFocus - используется для удаления или инициализации содержимого текстового поля. Вызывается, когда курсор устанавливается в текстовое поле.

 

Пример:

Private Sub txtNomGr_LostFocus()

Stud.NomGr=txtNomGr.Text

End Sub

Свойства текстового поля:

Text - содержит отображаемый в поле текст.

Enabled – определяет, будет ли элемент управления реагировать на событие или нет. Если свойству задано значение False, то элемент недоступен.

Visible – управляет видимостью элемента на экране. Если значение свойства False, то элемент “скрыт” от пользователя

 

Пример:

Private Sub Command1_Click()

Command1.Enabled = False

Command2.Visible = False

End Sub

 

ToolTipText – содержит текст всплывающей подсказки.

PasswordChar – задает символ, отображаемый в поле вместо вводимых символов.

MaxLength – определяет максимальное число символов, вводимых в текстовое поле.

С помощью свойства PasswordChar и MaxLength можно предназначить текстовое поле для ввода пароля.

Для управления текстом используются следующие свойства:

MultiLine - для ввода в текстовое поле нескольких строк.

ScrollBars - определяет, какую полосу прокрутки будет иметь текстовое поле (горизонтальную, вертикальную или обе).

SelStart - определяет начальную позицию выделенного текста в символах.

SelLength - содержит количество выделенных символов.

SelText - можно прочитать или изменить выделенный текст.

 

Пример выделения всего текста в текстовом поле и замена его новым:

Private Sub Text1_GotFocus()

Text1.SelStart =0

Text1.SelLength = Len(Text1.Text)

End Sub

 

7.26.4.Флажок(CheckBox)

 

Флажок(CheckBox)предназначен для выбора опции. Позволяет отобразить в форме логические данные. Флажок может иметь оно из трех различных состояний: быть отмеченным, не отмеченным, отображаться как отмеченным, но недоступным.

События:

Click - щелчок мыши.

Свойства:

Value – задает значение флажка:

0- отмечен;

1- не отмечен;

2- третье состояние.

Style– определяет внешний вид флажка:

0-Standard – обычный;

1-Graphical – графический. В этом случае элемент имеет вид кнопки (утопленной/приподнятой).

7.26.5.Переключатель (OptionButton)

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

События:

Click - щелчок мыши. Это событие вызывается, если пользователь с помощью мыши или клавиш управления курсором выбирает элемент в списке.

Свойства:

Value - состояние переключателя (True или False).

Переключатели чаще всего образуют группу элементов. Создать группу переключателей можно следующими способами:

1) Создать массив переключателей. В этом случае для программирования действий при установке переключателя можно использовать процедуру:

Private Sub optBut1_Click(Index As Integer)

Select Case Index

Case 0

MsgBox “Выбрали первый переключатель”

Case 1

MsgBox “Выбрали второй переключатель”

. . .

End Select

End Sub

2) Переключатели следует разместить в элементе управление Группа (Frame). Для определения состояния переключателя можно использовать оператор If:

If optBut1=True Then

MsgBox “Выбрали первый переключатель”

Else

MsgBox “Выбрали второй переключатель”

. . .

EndIf

 

7.26.6. Рамка (Frame)

 

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

Для объединения элементов в группу нужно сначала создать элемент-контейнер, а затем добавить в него нужные элементы управления. Если требуемые элементы управления уже находятся в форме, их достаточно переместить в элемент-контейнер.

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

Например: Если для рамки свойство Visible равно False, то все входящие в рамку элементы тоже станут невидимыми.

События рамки обычно не анализируются.

.7.26.8. Список (ListBox)

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

События:

Click - щелчок мыши. это событие вызывается, если пользователь с помощью мыши или клавиш управления курсором выбирает элемент в списке.

Методы:

Необходимы для обработки элементов списка - добавления или удаления.

AddItem - для добавления новых элементов:

ListBox.AddItem Элемент[, Индекс]

Параметр Элемент задает добавляемый элемент списка. С помощью параметра Индекс указывается место вставки в список нового элемента. Данный метод должен вызываться при вставке каждого элемента. Как правило, заполнение списка выполняется при загрузке формы.

Пример: Создание списка разрядов

Private Sub Form_Load()

lstRasr.AddItem "10"

lstRasr.AddItem "11"

lstRasr.AddItem "12"

lstRasr.AddItem "13"

lstRasr.AddItem "14"

lstRasr.AddItem "15"

lstRasr.AddItem "16"

lstRasr.AddItem "17"

End Sub

 

RemoveItem - для удаления элемента из списка:

ListBox. RemoveItem Индекс_элемента

Индекс_элемента - индекс удаляемого элемента. Индексация начинается с 0.

Clear - для удаления всех элементов списка

ListBox.Clear

Свойства:

Text - текст выбранного элемента списка.

List()-определение текста элементов списка в окне свойств (переход на новую строку в списке выполняется командой Ctrl+Enter).

Sorted - определяет способ расположения элементов в списке (по алфавиту).

ListIndex - определение индекса выбранного элемента. Если в списке не выбран ни один элемент, то значе­ние свойства = -1.

Пример. Обращение по индексу к элементу списка с помощью свойства List()

ls = lstBox.List(lstBox.ListIndex)

ListCount-текущее количество элементов в списке. Используется при обработке содержимого всех элементов списка в цикле.

For i=0 to lstBox.ListCount-1

‘ обработка lstBox.List(i)

Next i

Style – определяет внешний вид списка: стандартный список (0) или список флажков (1).

Columns – определяет количество колонок в тексте:

0 – обычный список;

1 – одна колонка с горизонтальной линейкой;

2 – две колонки.

MultiSelect - одновременный выбор нескольких элементов списка: 0 - множественный выбор невозможен.

1 - простой множественный выбор. Элементы списка выбираются щелчком мыши или нажатием Space

2 - расширенный множественный выбор. Пользователь может выбрать несколько элементов с помощью мыши или клавиш управления курсором с использованием клавиш Shift и Ctrl.

Selected()-показывает, выделен данный элемент списка или нет. Свойство Selected содержит массив значений, соответствующих количеству элементов в списке. Если значение элемента в массиве равно True, то данный элемент выбран.

Пример:

For i=0 to lstBox.ListCount-1

If lstBox.Selection(i) then

‘ обработка lstBox.List(i)

EndEf

Next i

Itemdata – позволяет задать список значений (тип Long Integer), элементы которого соответствуют элементам списка ListBox.

Пример. Создать список lstFam. Элементами списка являются фамилии студентов существующего файла данных. Свойству ItemData присвоить список значений – номера зачетной книжки студентов.

Private Sub Form_Load()

Open “Stud” For Random As#1 Len=Len(Stud)

For i=1 to Lof(1)Len(Stud)

Get#1,i,Stud

LstFam.AddItem Stud.Fam

LstFam.ItemData(lstFam.NewIndex)=Stud.NomSt

Next

End Sub

‘ Свойства NewIndex содержит индекс последнего добавленного в список элемента

Private Sub lstFam_Click()

‘ действие над значением – номер зачетной книжки, полученным ‘после выбора фамилии студента из списка

n=lstFam.ItemData(lstFam.ListIndex)

End Sub

 

7.26.9. Поле со списком (ComboBox)

Это комбинированный список, представляет собой комбинацию двух элементов управления - самого списка со значениями и поля ввода текста (текстового поля). Используется, когда нельзя заранее определить значения, которые следует включить в список, или список содержит слишком много элементов. В таком списке нужное значение можно не только выбирать, но и вводить непосредственно в поле ввода. Новое значение поля автоматически помещается в список.

События:

Click - Щелчок мыши. Используется для выбора элемента списка.

Change - Для изменения записи в поле ввода текста.

Свойства:

Поле со списком имеет почти все свойства текстового поля и списка ( за исключением MultiLine)

Style - определяет внешний вид и функционирование поля со списком:

0 - ComboBox представляет собой текстовое поле для редактирования и открывающийся список (задано по умолчанию).

1 - ComboBox представляет собой текстовое поле для редактирования и постоянно открытый список.

2 - отличается от 0 тем, что пользователь не может вводить текст в текстовое поле.

Рассмотрим пример использования элементов управления для работы с данными в форме.

Создать справочник персонала. Для ввода сведений о работнике разместить в форме элементы управления: текстовые поля, список, переключатели (рис.7.25).

 
 

Рис. 7.25. Форма для ввода сведений о работнике.

 

Private Sub Command1_Click()

Dim фамилия As String, имя As String, отчество As String

Dim номер As String, разряд As String, пенсия As String

Dim пол As String

Open "c:person.txt" For Append As #1

Do Until txtFam.Text = ""

фамилия = txtFam.Text

имя = txtName.Text

отчество = txtOtch.Text

номер = txtTab.Text

разряд = lstRasr.Text

If Option1.Value = True Then

пол = "м"

Else

пол = "ж"

End If

If Check1 = 0 Then

пенсия = "да"

Else

пенсия = "нет"

End If

txtFam.Text = ""

txtName.Text = ""

txtOtch.Text = ""

txtTab.Text = ""

Print #1, фамилия; ","; имя; ","; отчество; ","; номер; ","; _

разряд; ","; пенсия; ","; пол

Loop

Close #1

End Sub

Private Sub Form_Load()

lstRasr.AddItem "10"

lstRasr.AddItem "11"

lstRasr.AddItem "12"

lstRasr.AddItem "13"

lstRasr.AddItem "14"

lstRasr.AddItem "15"

lstRasr.AddItem "16"

lstRasr.AddItem "17"

End Sub