Вот как будет выглядеть теперь процедура деления:
Private Sub Кл_деления_Click ()
If IsNumeric(Число1) And IsNumeric(Число2) Then
Чис1 = Число1.Text
Чис2 = Число2.Text
If Чис2 <> 0 Then Результат.Text = Чис1 / Чис2 Else MsgBox ("На ноль делить нельзя")
Else
MsgBox ("Вводите только числа")
End If
End Sub
Как видите, здесь в состав многострочного If входит однострочный.
Ставим пароль на калькулятор
Ваш калькулятор стал достаточно надежен и удобен. Теперь его не стыдно показать друзьям. Ну а защищаться от врагов будем паролем.
Наша задача — сделать так, чтобы при попытке запустить калькулятор на экране появлялось приглашение ввести пароль, известный только вам. При попытке ввода неправильного пароля, программа должна заканчивать свою работу.
Поскольку приглашение на ввод пароля должно появляться раньше всего остального, то программируем его в процедуре Form_Load, в самом начале. Предварительно объявим строковую переменную для хранения пароля и выдумаем сам пароль, например, "калям".
Dim Parol As String 'Переменная-пароль
Private Sub Form_Load()
Parol = InputBox("Введите пароль")
If Parol <> "калям" Then MsgBox ("Пароль неверный!"): End
End Sub
Новый для вас оператор End делает всего одну вещь — вызывает завершение программы.
Запустите проект и проверьте, как он работает.
То же самое можно было бы запрограммировать короче, без использования переменной:
Private Sub Form_Load()
If InputBox("Введите пароль") <> "калям" Then MsgBox ("Пароль неверный! "): End
End Sub
Вообще, переменные нужны, если нужна неоднократная обработка какой-то информации: складывать что-то, затем сравнивать это что-то с чем-то другим и т. д. В нашем же случае пароль нужен всего один раз, для сравнения, так что можно обойтись и без переменной.
Вы скажете: Кто угодно перед запуском моей программы посмотрит в ее текст и сразу же увидит пароль. Совершенно верно. Чтобы текст программы не был виден, преобразуйте проект в исполнимый файл, как мы это делали.
Сделаем так, чтобы в случае ввода пароля в текстовое поле там появлялись не буквы пароля, а звездочки. В этом случае никто из-за вашей спины не сможет пароль подсмотреть. Для этого достаточно до ввода пароля выполнить строку Text1.PasswordChar = "*"
Функция MsgBox
Ранее я вкратце описал, как пользоваться оператором MsgBox. Здесь я более подробно разберу действие функции MsgBox. Функция отличается от оператора тем, что она встречается в выражениях и в правой части оператора присваивания, и еще тем, что подобно переменной имеет значение. Например, возьмем оператор присваивания: у = MsgBox("Привет!")
При выполнении этого оператора мы увидим на экране точно такое же окно сообщения, как при выполнении оператора MsgBox("Привет!")
Но вдобавок к этому, после того, как мы нажмем на кнопку ОК, переменной у будет присвоено некое значение. Что это за значение и зачем оно нужно, мы сейчас выясним.
Задача: В текстовом поле Visual Basic для нашей пользы печатает, сколько будет дважды два. После чего, заботясь о нашем зрении, он выводит следующее окно сообщения — >
При нажатии на Yes шрифт увеличивается, при нажатии на No ничего не происходит.
Вот программа:
Private Sub Command1_Click()
Text1.Text = 2*2
у = MsgBox ("He мелковат ли шрифт?", vbQuestion + vbYesNo, "Забота о пользователе")
If у = vbYes Then Text1.FontSize = 20
End Sub
Пояснения: Здесь полужирным шрифтом я выделил новые для вас элементы. Константа vbQuestion означает приказ изменить внешний вид окна сообщения, конкретнее — изобразить в нем картинку со знаком вопроса. Константа vbYesNo означает приказ поместить в окне сообщения кнопки Yes и No. Знаком плюс эти константы соединены, так как имеют некие численные значения, о которых вам, впрочем, не обязательно задумываться. После нажатия на кнопку Yes функция MsgBox приобретает значение vbYes. После нажатия на кнопку No функция MsgBox приобретает значение vbNo. Поэтому фрагмент
If y = vbYes…
можно перевести так: "Если была нажата кнопка Yes…"
Вот константы для задания внешнего вида окна сообщения: VbCritical, vbQuestion, vbExclamation, vblnformation.
Вот константы для задания кнопок в окне сообщения: VbOKOnly, vbOKCancel, vbAbortRetrylgnore, vbYesNoCancel, vbYesNo, vbRetryCancel.
Вот константы для задания значения функции MsgBox после нажатия на кнопку: vbOK, vbCancel, vbAbort, vbRetry, vblgnore, vbYes, vbNo.
Поэкспериментируйте со внешним видом окна сообщения. Поведение окна сообщения определяется еще кое-какими константами, но мы на них не будем останавливаться.