Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Плещёв ИП 2010-04-04 doc.doc
Скачиваний:
108
Добавлен:
13.05.2015
Размер:
5.96 Mб
Скачать

6.2. Командные кнопки (CommandButton)

Командные кнопки используются для организации перехода и выполнения отдельных шагов сценария взаимодействия пользова­те­ля с прикладной программой.

Специфичные свойства

Default/Cancel=Trueдублирование нажатие кнопки клавишамиEnter/Esc.

Value=True ‑ прог­раммно вызвать событие Click (Command2.Value=True).

Использование события MouseDown вместо Click позволяет отка­зать­ся от возбуждения события Click, если пользователь передумает.

6.3. Текстовые поля (TextBox, MaskedEdit, RichTextBox)

Объект TextBoxпредназначен для ввода и вывода значений.

Специфичные свойства

Textзначение (типаVariant) поля.

MaxLength‑ максимально допустимое число символов в поле.

PassWordChar‑ символ, который выводится вместо вводимых сим­во­лов (на­при­мер, текст пароля), скрывая их от постороннего.

MultiLine=True ‑ позволяют вводить многострочный текст (для перехода на следующую строку нажимают клавиши ^Enter).

ScrollBars=True‑ вывод линейки прокрутки в многострочном поле.

С событием Changeможно связать процедуру проверки пра­виль­ности вводимых данных или изменения свойств других объектов в зависимости от введенных значений (например, блокировать кнопки).

Числа вводятся, как строки, поэтому возможны ошибки при вводе, например: вместо нуля ввели букву “О”. Поэтому следует проверять пра­виль­ность ввода числа, например: в об­работчике события Validateуказать:Cancel=NotIsNumeric(Text1.Text) либо восполь­зоваться объек­том Masked­Edit и его свой­ством Mask.

Примерпроцедуры выделения всего текста в полеText1.

PrivateSubText1_GotFocus() ‘процедура получения фокуса

Text1.SelStart= 0 ‘первая выделяемая позиция (п. 5.1)

Text1.SelLength=Len(Text1.Text) ‘длина всего текста для выделения

EndSub

Объект MaskedEdit(компонент Microsoft Masked Edit Control 6.0) аналогичен TextBox, но имеет дополнительное свойствоMask (мас­ка), задающее допустимые символы при вводе:

#‑ допускаются символы: +, ‑, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, пробел;

?‑ любая буква латинского алфавита;

A‑ любая буква латинского алфавита или цифра;

&‑ любой символ или пробел;

.‑ десятичная точка (13.56);

,‑ разделитель тысяч (10, 234, 345);

/‑ разделитель дат (07/08/99);

:‑ разделитель времени (05:25).

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

Например, маска ввода номера телефона: (###)##-##-##

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

Объект RichTextBox (компонент Microsoft Rich TextBox Con­trol 6.0) имеет дополнительные возможности: текст большого объ­ема, работа с различными шрифтами, цветами, отступы, выключки текста, форматирование текста типа RTF.

6.4. Надписи (Label)

Надписи служат для размещения текста (значение свойства Caption).

Специфичные свойства

AutoSize=True ‑ установить размер надписи по числу символом в надписи.BorderStyle=1 ‑ окружить текст рельефной рамкой.

BackStyle=Transparent ‑ окружение текста прозрачное, что улучшает вид надписи, выводимой на фоне рисунка.

WordWrap‑ перенос слов на следующую строку при AutoSize=False.

Пример. Составить программу ‑ игру “Угадай число” (рис. 6.4.1).

В поле Text1 задается число N для формирования случайного поло­жи­тельного целого числа в интервале [1,N], и это число должен угадать игрок. Кнопкой Загадать число(Command1) формируется это случайное чис­ло. Игрок вводит предполагаемое число в поле Text2 и нажимает кноп­куПопытка. Если это число больше загаданного, то в поле Text3 (Ре­зуль­тат) выводится текст подсказки “Перелет”. Если это число меньше за­га­данного, то выводится текст “Недолет”. Наконец, при совпадении выво­дит­ся текст “Угадал”. Число использованных попыток выводится в поле Теxt4. КнопкойОчистить(Command3) все поля очищаются. При проек­ти­­ровании формы и в процедуре обработки кнопкиОчиститьсвойству Text для полей Text1, Text2, Text4 присвоим нулевое значение, а для поля Text3 ‑ пробельное значение.

Рис. 6.4.1. Вид формы

Приведем тексты процедур программы.

(General)(Declarations) раздел глобальных объявлений формы

Public i As Integer ‘объявление переменной I ‑ загадываемое число

Private Sub Text1_Change() ‘обработка текущего значения поля Text1

Dim Flag As Boolean ‘объявление логической переменной Flag

‘условие возможности ввода и проверки предполагаемого загаданного числа

Flag = IsNumeric(Text1.Text) And (i > 0) And IsNumeric(Text2.Text)

Command1.Enabled = IsNumeric(Text1.Text) ‘условие доступности Command1

Command2.Enabled = flag ‘условие доступности Command2

Text2.Enabled = flag ‘условие доступности поля Text2

End Sub

Private Sub Text2_Change() ‘обработка текущего значения поля Text2

Command2.Enabled = IsNumeric(Text2.Text) ‘условие доступности Command2

End Sub

Private Sub Command1_Click() ‘обработка кнопкиЗагадай число

Randomize Timer ’включение счетчика случайных чисел

i =1+(Text1.Text ‑ 1)*Rnd ‘формирование угадываемого случайного числа

Text2.Enabled = True ‘разблокировка поля Text2 для ввода

Text2.SetFocus ‘установка фокуса на поле Text2

End Sub

Private Sub Command2_Click() ‘обработка кнопкиПопытка

If Text2.Text > i Then ‘введенное число больше загаданного

Text3.Text = ”перелёт” ‘вывод подсказки

ElseIf Text2.Text < i Then ‘введенное число меньше загаданного

Text3.Text = ”недолёт” ‘вывод подсказки

Else ‘введенное число равно загаданному

Text3.Text = ”угадал”

End If

Text4.Text = Text4.Text + 1 ‘увеличение числа попыток на единицу

Text2.SetFocus ‘установка фокуса на поле Text2

End Sub

Private Sub Command3_Click() ‘обработка кнопкиОчистить

Text1.Text = 0 ‘очистка нулем поля Text1

Text2.Text = 0 ‘очистка нулем поля Text2

Text3.Text = ”” ‘очистка пробелами поля Text3

Text4.Text = 0 ‘очистка нулем поля Text4

i = 0 ‘очистка нулем случайного угадываемого числа

Text1_Change ‘выполнение процедуры обработки значения поля Text1

Text1.SetFocus ‘установка фокуса на поле Text1

End Sub

Private Sub Command4_Click() ‘обработка кнопкиВыход

End ‘окончание работы программы

End Sub

Private Sub Text2_DblClick() ‘двойной щелчок по полю Text2

Text2.Text = i ‘в поле Text2 помещается загаданное число

Command2_Click ‘вызов процедуры обработки кнопки “Попытка”

End Sub

Private Sub Form_Activate() ‘активизация формы перед ее выводом

Command3_Click ‘вызов процедуры обработки кнопки “Очистить”

End Sub