Необязательные параметры приведены в квадратных скобках





Скачать 146.56 Kb.
НазваниеНеобязательные параметры приведены в квадратных скобках
Дата публикации28.07.2014
Размер146.56 Kb.
ТипДокументы
100-bal.ru > Информатика > Документы
Занятие 15 «Процедуры и функции в Visual Basic. Диалог с пользователем.»

В занятии рассказывается, как в своих проектах использовать команду и функцию MsgBox. Слушатели делают проект prjDialogue, реализующий диалог с пользователем, используя InputBox .и MsgBox. Кроме этого в занятии объясняется, как создавать новые процедуры и функции. Слушатель модифицирует проект prjDialogue так, чтобы каждый этап диалога был реализован в отдельной процедуре или функции

1. Окно MsgBox, команда MsgBox

Для вывода различных сообщений в Visual Basic имеется окно, подобное InputBoxMsgBox. Почти все приложения Windows используют MsgBox, т. к. этот компонент входит в состав Windows. Visual Basic только предоставляет возможность его вызова.


Вид окна может быть различным, но в его состав всегда входит:

-текст сообщения (prompt);

-заголовок (title);

-пиктограмма;

-набор кнопок.

Синтаксис команды:

MsgBox prompt [,type] [,title]


где typeцелая константа (или несколько констант), определяющая, какие кнопки (комбинации кнопок) и пиктограммы будут отображаться в окне сообщения.

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


Параметр type определяет внешний вид MsgBox. Значение параметра формируется из нескольних частей, которые можно складывать: button, icon, default, modal, extras.

Для категории параметра button, icon, default, modal можно использовать только одну из допустимых констант. Для категории extras допусткается применение комбинации значений.

Ниже приведена таблица констант параметра type MsgBox.


Константа

Значение
Описание

Категория Button







VbOkOnly

0

Только кнопка ОК

VbOkCancel

1

Кнопки ОК и Отмена

VbAbortRetryIgnore

2

Кнопки Стоп, Повторить, Пропустить

VbYesNoCancel

3

Кнопки Да, Нет и Отмена

VbYesNo

4

Кнопки Да и Нет

VbRetryCancel

5

Кнопки Повторить и Отмена

Категория Icon







VbCritical

16

Отображает пиктограмму Critical Message

VbQuestion

32

Отображает пиктограмму WarningQuery

VbExclamation

48

Отображает пиктограмму Warning Message

VbInformation

64

Отображает пиктограмму Information Message

Категория Default







VbDefaultButton1

0

По умолчанию активна первая кнопка

VbDefaultButton2

256

По умолчанию активна вторая кнопка

VbDefaultButton3

512

По умолчанию активна третья кнопка

VbDefaultButton4

768

По умолчанию активна четвертая кнопка

Категория Modal







VbApplicationModal

0

Модальное диалоговое окно приложения

VbSystemModal

4096

Модальное диалоговое окно системы
Категория Extras







VbMsgBoxHelpButton

16384

Дополнительная кнопка для справки

VbMsgBoxSetForeground

65536

Отображение диалогового окна в фоновом режиме

VbMsgBoxRight

524288

Текст выровнен по правому краю

VbMsgBoxRtReading

1048576

Текст отображается справа налево (еврейский, арабский)

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

Начните новый проект, поместите на форму командную кнопку command1 и составьте для нее следующий код:

Private Sub Command1_Click( )

MsgBox "Мое первое окно сообщения"

End Sub

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

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

В
ыберем из них vbCritical. Тогда строка кода примет вид:
MsgBox "Мое первое окно сообщения", vbCritical

В
результате на окне сообщения окажется пиктограмма:

Попробуйте поставить в качестве значения второго параметра константу vbQuestion. Окно станет таким:
М
ожно выбрать одну из четырех пиктограмм для отображения в окне сообщения.

Предположим теперь, что вы хотите, чтобы в окне MsgBox отображались вопросительный знак, кнопки ДА, НЕТ, и при этом кнопка НЕТ была кнопкой по умолчанию. Кроме того, выполнение дальнейших операторов программы должно продолжаться только после закрытия окна (окно должно быть модальным окном приложения). Для этого следует просуммировать соответствующие значения:
t$=vbYesNo Or vbQuestion Or DefaultButton2 Or vbApplicationModal

Обратите внимание, что корректное суммирование значений констант выполняется оператором Or.

Оператор будет таким:

MsgBox “Первое окно сообщения”,t$

Не забудьте в коде определить переменную t$. В результате ваше окно сообщения будет иметь вид:

Т
ак как всем символьным константам Visual Basic соответствуют числовые значения, код, реализующий те же требования, мог бы выглядеть следующим образом:
t$ = 4 + 32 + 256 + 0

MsgBox “Первое окно сообщения”, t$

Попробуем теперь в строку кода добавить значение еще одного параметра title. Напишите, например, свою фамилию:
MsgBox "Первое окно сообщения",t$, “Истомина”

В строке заголовка окна сообщения напечатается ваша фамилия:

2
. Функция MsgBox( )


Если вам необходимо не только что-либо сообщить пользователю, но и получить информацию о том, какое решение принял пользователь, можно воспользоваться функцией MsgBox. Функция MsgBox( ) не только отображает окно сообщения, но еще и возвращает некоторое значение (ответ пользователя о том, какое он принял решение). Приведем формат функции MsgBox( ):

Возвращаемое_значение= MsgBox (prompt [,type] [,title])


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


Константы

Значение

Нажата кнопка


VbOk

1

ОК

VbCancel

2

Отмена

VbAbort

3

Стоп

VbRetry

4

Повторить

VbIgnore

5

Пропустить

VbYes

6

Да

VbNo

7

Нет

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

Необходимо корректно использовать функцию MsgBox. Обычными для нее являются вопросы типа: «Хотите ли Вы сохранить изменения в…?» (Да/Нет/Отмена). Вопрос должен формулироваться четко и ясно, чтобы пользователь мог дать на него однозначный ответ.

Кнопка Default (активная по умолчанию) должна определяться таким образом, чтобы при случайном нажатии клавиши <Enter> действия, реализуемые в процедуре обработки нажатия кнопки по умолчанию, не могли нанести большого вреда. Например, не следует в окне с вопросом: «Удалить все внесенные изменения?» (Да/Нет) назначать кнопку Да по умолчанию.

  1. Проект prjDialogue

Cделаем небольшой проект. Смысл проекта заключается в том, что пользователю в несколько этапов будут задаваться вопросы (с помощью окна InputBox). Ответы будут использоваться для некоторых вычислений или сравнений, после которых на каждом этапе ему с помощью функции MsgBox будет сообщаться об итогах данного этапа и будет предлагаться продолжить диалог или закончить его. Если пользователь принимает решение продолжить работать с программой, задаются вопросы следующего этапа, ответы на которые будут использоваться для некоторых вычислений или сравнений. И опять в окне MsgBox будет даваться некоторое сообщение пользователю и предложение продолжить или закончить диалог.

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

На форму поместим одну командную кнопку (свойство Caption зададим – «Диалог»). Весь код проекта будем составлять в коде этой командной кнопки.

На первом этапе запросим имя пользователя, после чего поприветствуем его, используя метод Print и функцию Tab, на форме.

YourName = InputBox (“Как Вас зовут?”)

Print Tab (10);”Приветствуем Вас,”;YourName

Не забудьте объявить переменную YourName.

Далее запросим возраст пользователя:

YourAge = InputBox (“Сколько Вам лет?”, “Ваш возраст”)

После этого запросим возраст соседа пользователя:

HimAge = InputBox (“Сколько ему лет?”, “возраст соседа”)

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

Блок кода, в котором производится сравнение возрастов может быть таким:

f$ = vbYesNo Or vbExclamation Or vbDefaultButton1

If YourAge > HimAge Then

Answer1%=MsgBox("Вы старше соседа! Продолжим диалог?", f$)

ElseIf HimAge > YourAge Then

Answer1% = MsgBox("Ваш сосед старше Вас! Продолжим диалог?", f$)

Else

Answer1% = MsgBox("Вы одногодки! Продолжим диалог?", f$)

End If

На этом этапе окно MsgBox мы вызываем с помощью функции MsgBox, т. к. нам важен ответ пользователя на вопрос: хочет он продолжить работу с проектом или нет. Переменную, в которой будет храниться ответ пользователя, назовем Answer1%. Теперь обработаем ответ пользователя. Если он ответил <No>, то, согласно таблице, Answer1% = 7. Перед последней строкой процедуры (End Sub) поместим еще одну строку и слева обозначим ее меткой, например, 100:

100 Print: Print: Print Tab(5); “До свидания!”

Если значение переменной Answer1% = 7, то будем делать переход на строку с меткой 100.

Goto 100

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

Если пользователь решил продолжить диалог (согласно таблице значение Answer1% = 6), то будем делать переход на следующий блок программного кода – этап 2. Первую строку кода этого этапа обозначим меткой 10:

Goto 10

Тогда блок анализа ответа пользователя может выглядеть вот так:

If Answer1% = 7 Then

GoTo 100

Else

GoTo 10

End If

Не забудьте в начале процедуры объявить все необходимые переменные:

Dim YourName As String, YourAge As Integer

Dim HimAge As Integer, f$, Answer1%

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

  1. Создание новых процедур

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

Процедура – это подпрограмма (часть программного кода). Она начинается оператором Sub, заканчивается оператором End Sub. Между ними помещается код. Процедура обязательно имеет имя. Процедуры могут вызываться самим Visual Basic. Это процедуры обработки событий. Такие процедуры относятся к конкретному объекту и событию, связанному с ним. Имя процедуры обработки события состоит из имени объекта и имени события. Например:

Private Sub Command1_Click( )

End Sub

Можно создавать собственные процедуры, так называемые общие процедуры. Такие процедуры относятся к секции General (Declaration).

Существует два способа добавления процедуры в проект. Первый способ заключается в том, чтобы написать код прямо в разделе General объявлений формы или модуля. Другой способ – использование пункта Add Procedure (добавить процедуру) из меню Tools (Сервис).

Начните новый проект и добавьте общую процедуру:

Public Sub Remember( )

Dim t As String

t = vbOKOnly Or vbExclamation Or vbMsgBoxSetForeground

MsgBox "Учи уроки!", t, "Напоминание"

End Sub


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

Сделайте в своем проекте командную кнопку, а в ее коде вызов процедуры Remember( ):

Call Remember


Т
еперь, если вы запустите проект на выполнение и щелкните на кнопке, увидите окно MsgBox:

В любом другом месте программы, если вы захотите напомнить пользователю, что надо учить уроки, вам достаточно будет вставить в соответствующее место вызов процедуры Remember( ), а не писать ее снова.

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

  1. Создание новых функций

Функция построена также, как процедура. Однако есть отличия. Как и в математике, результатом работы функции является только одно возвращаемое значение.

Добавить в проект функцию можно теми же двумя способами, которые используются для добавления процедур: либо ввести код функции непосредственно в раздел General формы или модуля, либо с помощью диалогового окна Add Procedure. Для определения функции используется ключевое слово Function. В конце функции вместо End Sub пишется End Function.

Добавьте в свой проект любым способом функцию, которая бы с помощью окна InputBox запрашивала имя пользователя.

Public Function Surname( ) As String


Surname = InputBox("ВВедите свою фамилию", "фамилия")

End Function


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

Print Surname


  1. Изменение проекта prjDialogue

На предыдущем уроке вы сделали проект prjDialogue, в котором пользователю задавалось несколько вопросов в несколько этапов. На каждом этапе ответы пользователя анализировались, сравнивались, или с их помощью производились вычисления. На основе анализа делался некоторый вывод и печатался в окне MsgBox.

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

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

Этап проекта, на котором пользователю задается вопрос об имени, и он приветствуется на форме, поместим в процедуру Name( ):
Private Sub Name( )

Dim SurName As String


SurName = InputBox(“Как Вас зовут?”)

Cls

Print:Print:Print:Print

FontSize = 14

Print Tab(5);”Приветствуем Вас,”; SurName

End Sub


В процедуре Age( ) будут задаваться вопросы и анализироваться ответы пользователя о возрасте:

Private Sub Age( )

Dim YourAge%, HimAge%, Answer%,F $


YourAge% = InputBox (“Сколько Вам лет?”,”ваш возраст”)

HimAge%=InputBox (“Сколько лет Вашему соседу”,”сосед”)

F$ = vbYesNo Or vbExclamation Or vbDefaultButton1

If YourAge% > HimAge% Then


Answer%=MsgBox(“Вы старше своего соседа! Продолжим_ диалог?”, F$)
ElseIf HimAge% > YourAge% Then

Answer%=MsgBox(“Ваш сосед старше Вас! Продолжим_ диалог?”, F$)
Else

Answer%=MsgBox(“Вы одногодки! Продолжим диалог?”,F$)
End If

If Answer%< > 7 Then

Call…
Else

Print: Print: Print Tab(5);”Большое спасибо за беседу.”

Print Tab(10);”До свидания.”

End If
End Sub

В последнем блоке процедуры, если пользователь не ответил «нет» на вопрос, хочет ли он продолжить диалог (переменная Answer%<>7), вызывается процедура следующего этапа (Call), в противном случае процедура заканчивает свою работу, вопросы пользователю больше не задаются.

Процедура командной кнопки будет иметь вид:
Private Sub Command1_Click( )

Call Name


Call Age

End Sub


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

  1. Область видимости переменных в процедурах. Инкапсуляция

В первом варианте проекта prjDialogue без отдельных процедур, чтобы проанализировать ответ пользователя о его желании продолжить диалог, на каждом этапе приходилось вводить новую переменную для ответа: answer1% - на первом этапе, answer2% - на втором этапе и т. д.

Во втором варианте проекта для хранения ответа на аналогичный вопрос на первом этапе проекта в процедуре Age( ) объявлена переменная Answer%. Она объявлена с помощью оператора Dim. Эта переменная остается в действии, т. е. она «видима» только для операторов блока кода этой процедуры. После завершения работы процедуры эта переменная удаляется из памяти. Значит в процедуре следующего этапа проекта для хранения ответа пользователя на аналогичный вопрос можно объявить локальную переменную с тем же именем. Эта переменная «скрыта» для остальной части кода.

Способность процедуры скрывать свою внутреннюю работу называется инкапсуляцией. Хорошо инкапсулированной называется такая процедура, которая не зависит от других частей кода и конкретных объектов. Такая процедура «работает» всегда одинаково.

8. Задания

Сделайте проект prjDialogue, реализующий диалог с пользователем, описанный в пункте 6 и пришлите на проверку.




Добавить документ в свой блог или на сайт

Похожие:

Необязательные параметры приведены в квадратных скобках iconНазвание книги по-русски в английской транслитерации, потом в квадратных...
...
Необязательные параметры приведены в квадратных скобках iconТребования к оформлению тезисов докладов
...
Необязательные параметры приведены в квадратных скобках iconПравила оформления статей для
Гост р 5-2008. Литература дается в порядке упоминания в статье. Ссылки в тексте оформляются в квадратных скобках, размещаются после...
Необязательные параметры приведены в квадратных скобках iconУрок Установка параметров страницы. Набор текста. Тире и дефис
Для подготовки документа к работе надо установить параметры страницы, параметры абзаца, а также параметры шрифта
Необязательные параметры приведены в квадратных скобках iconГаничкина Людмила Михайловна Цель урока: познакомить учащихся с условным...
Оборудование: модель предложения с моделями слов, звуковые фишки, задания на печатной основе с эталоном проверки, шарады
Необязательные параметры приведены в квадратных скобках iconПрограмма по формированию навыков безопасного поведения на дорогах...
Систематизировать знания по решению неполных квадратных и полных квадратных уравнений
Необязательные параметры приведены в квадратных скобках iconРеферат по математике на тему: Способы устного решения квадратных уравнений
Решение квадратных уравнений с помощью выделения квадрата двучлена
Необязательные параметры приведены в квадратных скобках iconУрок конференция по теме "Решение задач с помощью квадратных уравнений" 8-й класс
Решение задач с помощью квадратных уравнений”. Продолжить закрепление решение квадратных уравнений по формуле
Необязательные параметры приведены в квадратных скобках iconУрок по теме «Решение квадратных уравнений». 8 класс Цели урока
Обобщить, систематизировать, проверить основные умения и навыки решения квадратных уравнений
Необязательные параметры приведены в квадратных скобках iconПараметры документа word реферата Структура реферата
...
Необязательные параметры приведены в квадратных скобках iconУрок по алгебре в 8 классе. Тема урока: способы решений квадратных уравнений. Цель урока
Цель урока: провести игру «Счастливый случай» в закрепление и обобщение способов решения квадратных уравнений
Необязательные параметры приведены в квадратных скобках iconИзмерения параметров транзисторов
Как оценить качество транзистора? Какие параметры транзистора надо знать, чтобы предугадать его работу в приемнике, усилителе? Как...
Необязательные параметры приведены в квадратных скобках iconПрограмма по формированию навыков безопасного поведения на дорогах...
Сегодня мы познакомимся с очень интересными свойствами некоторых квадратных уравнений. Использование этих свойств при решении квадратных...
Необязательные параметры приведены в квадратных скобках iconТои дво ран) удк 551. 46+551. 5 (265)
Дальневосточные моря, тихий океан, теплосодержание вод, межгодовая и сезонная изменчивость, ледовые параметры, циркуляция вод, промежуточные...
Необязательные параметры приведены в квадратных скобках iconПрограмма по формированию навыков безопасного поведения на дорогах...
Обучающая – ввести понятия квадратного уравнения, корня квадратного уравнения; показать решения квадратных уравнений; формировать...
Необязательные параметры приведены в квадратных скобках icon2 3/271 «Параметры семантической характеристики слова в толковом словаре»
«Параметры семантической характеристики слова в толковом словаре» аналитической ведомственной целевой программы “Развитие научного...


Школьные материалы


При копировании материала укажите ссылку © 2013
контакты
100-bal.ru
Поиск