Шрифт:
Закладка:
Запустите проект и проверьте, как он работает.
То же самое можно было бы запрограммировать короче, без использования переменной:
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.
Поэкспериментируйте со внешним видом окна сообщения. Поведение окна сообщения определяется еще кое-какими константами, но мы на них не будем останавливаться.
Названия кнопок сами по себе не играют никакой роли, их действие полностью определяется кодом, который вы напишете в процедуре. Однако, в среде пользователей и программистов уже утвердились некоторые привычки, которые вам небесполезно знать:
ОК — просто принять сообщение к сведению, Cancel — отменить намечавшееся действие, Abort — прекратить неудавшуюся попытку (например, когда ваша процедура занимается распечаткой документа на принтере и приходит сообщение "Принтер не готов"), Retry — повторить неудавшуюся попытку, Ignore — проигнорировать предупреждение и продолжать, как ни в чем не бывало, Yes-No — ответить да или нет на вопрос, содержащийся в сообщении.
Циклические программы
Идею цикла я поясню на примере движения объектов по экрану. Возьмем игру в воздушный бой. Самолетик по экрану должен двигаться. Но в списках операторов большинства языков программирования, используемых профессиональными программистами для создания игр, нет команды движения. Здесь нужно задаться вопросом — а что такое движение? Рассмотрим иллюзию движения, возникающую на экране кинотеатра. Если вы держали в руках кинопленку фильма, изображающего, скажем, движение автомобиля, то должны были обратить внимание, что она состоит из множества неподвижных слайдов-кадров, на каждом следующем из которых автомобиль находится чуть-чуть в другом месте, чем на предыдущем. Показывая эти кадры один за другим с большой скоростью, мы создаем иллюзию движения автомобиля. Точно так же поступают с созданием иллюзии движения на экране компьютера. Запишем алгоритм движения самолетика по экрану слева направо:
Зададим в уме компьютера позицию самолетика в левой части экрана.
Нарисуем самолетик.
Сотрем его.
Изменим в уме компьютера позицию самолетика на миллиметр правее.
Перейдем к команде 2.
Каждая из приведенных команд алгоритма легко программируется на большинстве языков. Любой компьютер, выполнив очередную команду, автоматически переходит к выполнению следующей. Так, выполнив команду 2, компьютер всегда перейдет к выполнению команды 3, независимо от того, какую команду он выполнял перед командой 2. Однако, если мы захотим, то можем заставить компьютер изменить этот порядок, что мы и сделали в команде 5. Из-за нее компьютер выполняет команды в таком порядке: 1-2-3-4-5-2-3-4-5-2-3-… Таким образом, многократно выполняется последовательность команд 2-3-4-5. Такая многократно выполняемая последовательность называется циклом. Можно сказать, что цикл — это одно из средств заставить компьютер долго работать при помощи короткой программы.
В коротком промежутке времени после выполнения команды 2 самолетик будет появляться на экране и на команде 3 исчезать, но этого достаточно, чтобы человеческий глаз его заметил. Благодаря циклу самолетик будет мелькать каждый раз в новом месте, а поскольку смена "кадров" будет очень быстрой, нам будет казаться, что происходит плавное движение самолетика.
Не нужно думать, что циклы применяются лишь при движении. Они пронизывают все программирование.
Оператор перехода GoTo. Цикл. Метки
Посмотрим, как осуществить цикл в Visual Basic. Предположим, мы хотим, чтобы компьютер бесконечно повторял выполнение следующего фрагмента:
Debug.Print "Это";
Debug.Print "тело";
Debug.Print "цикла";
Debug.Print " ";
в результате чего в окне Immediate мы бы увидели:
Это тело цикла Это тело цикла Это тело цикла Это тело цикла….
Если бы операторы Visual Basic можно было писать по-русски, то для достижения нашей цели было бы естественно воспользоваться такой конструкцией:
метка m1: Debug.Print "Это";