Функция InputBox для получения данных от пользователя




Рисунок 11.

Видишь, Выделена кнопка "Нет". Значит она главная. Это если пользователь давнет клавишу "Enter", то сработает "Нет", а не "Да"

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

Константа Число Какая кнопка нажата
vbOK   OK
vbCancel   Отмена (Cancel)
vbAbort   Прервать (Abort)
vbRetry   Повторить (Retry)
vbIgnore   Пропустить (Ignore)
vbYes   Да (Yes)
vbNo   Нет (No)

Сечас мы создадим шедевр программирования, где используем диалоговое окно и разберем кое-что еще. Программа наша называется "Я - не вирус", а замечательность ее в том, что она вообще ничего не умеет делать. Смысл ее в том, что, когда пользователь пытается выйти из программы, возникает событие для формы _Unload. Это событие может быть вызвано оператором Unload, выбором команды "Закрыть" из системного меню формы, закрытием приложения из Списка задач (Task List) Windows, закрытием MDI формы, для которой текущая форма является дочерней, или выходом из Microsoft Windows во время работы приложения. При этом значение аргумента этой процедуры Cansel принимает значение False. Присвоение аргументу Cansel любого ненулевого значения предохраняет форму от удаления, но не останавливает другие события, например, выход из Microsoft Windows. Но нам на это налевать. Мы вставляем в эту процедуру MsgBox c запросом на выход. Если нажимается кнопка Отмена выхода, мы присваиваем локальной переменной Cansel значение True, и выход отменяется, а мы переходим к процедуре FikVam(), которая выводит соответствующий текст в форму.

Обратите внимание, что для того, чтобы в диалоговом окне писать сообщение в несколько строк, я использовал CHR(13). А как раз 13 - это ASCII-код перевода строки.

Вот код этого кошмара.

Option Explicit
Dim PushButton As Long ' объявляем переменную для нажатой кнопки

Private Sub Form_Load() ' процедура загрузки формы
Form1.Caption = "Я - не вирус!" 'прописываем заголовок формы
Form1.Print " ************************************" 'пишем на форме честно, что это за штука
Form1.Print " Ты запустил классную программу! "
Form1.Print " Только я ни черта делать не умею!"
Form1.Print " Зато я и вреда не приношу! "
End Sub

Private Sub Form_Unload(Cancel As Integer) 'процедура выгрузки формы
PushButton = MsgBox("Что ж ты гад делаешь!!" & Chr(13) & "Я к те, как к родному, а ты..." & Chr(13) & "Нажми Отмену сечас же!", 273, "Ты же закрываешь меня!") ' вывод диалогового окна при попытке закрыть форму
If PushButton = 1 Then ' условие, если нажата кнопка ОК
Cancel = False ' подтверждаем выход, хотя это необязательно, она и так выйдет
Else ' в противном случае
Cancel = True ' отменяем выход
FikVam 'ссылка на процедуру, которая срабатывает при нижатии Отмена
End If 'конец условия
End Sub

Private Sub FikVam() 'процедура, которая срабатывает при нижатии Отмена
Form1.Cls ' очистка формы
Form1.Print "Вот Молодец! Лучше я, чем вирус" ' вывод текста на форму
End Sub

Как вставить в программу иконку и курсор.

Сейчас сделаем нашу никчемушку красивой. Во-первых заменим идиотский значок Бейсика на наш. Для этого в окне свойств Form1 ткнем в свойство Icon и в открывшемся окне Загрузить Иконку выберем подходящую. В исходнике программы я положил иконку scin.ico для примера. Если у тебя нет иконок, можно пойти двумя путями: найти их в Интернете (их там полно) или изготовить самому. Я считаю, что достойная программа должна иметь свою, уникальную иконку, а не стыренную у других. Мы что, такие безрукие, что иконку сделать не сможем? Ты можешь скачать простую самопальную программку ICA Converter (не мою) для иконкоделанья. Не самая крутая, зато бесплатно и худо-бедно работает.

Теперь выберем для нашей формы другой курсор. Для этого в окне свойств Form1 найдем свойство MousePointer и выберем там 99 - Custom. Это значит, что значком будет тот файл, который мы выберем (расширение должно быть.ico или.cur). Потом ткнем в свойство MouseIcon и в открывшемся окне Загрузить Иконку выберем подходящую (в исходник я положил hns.cur). Надо сказать, что так сказать штатные курсоры Windows лежат в "C:\WINDOWS\Cursors". Ну конечно лучше сделать свой.

Для полного обалдения можно еще воткнуть фоновую картинку в форму Form1, чтобы наш шедевр выглядел привлекательней. Для этого в окне свойств Form1 ткнем в свойство Picture и в открывшемся окне Загрузить Рисунок выберем подходящий. Надо только брать картинку разумного размера. В исходнике я положил картинку 00027.jpg размером 118Kb c небольшой контрастностью, чтобы лучше была видна надпись и подогнал размер формы под нее, а также в окне свойств выставил размер и тип (свойство .Font) и цвет (свойство .ForeColor) шрифта.

Функция InputBox для получения данных от пользователя

Теперь бы как хорошо было бы, если бы.... пользователь помимо нажатия кнопок мог отвечать нам какими-нибудь данными, ввести например, пороль, или имя, или еще чего-нибудь. Для этого используется функция InputBox.

Синтаксис этой функции таков:

InputBox("сообщение", "заголовок окна", "данные по умолчанию", расстояние между левой границей экрана и левым краем экрана,то же для верхней границы, "имя Help-файла", номер раздела Help-файла)

Обязательным здесь является только первый аргумент (), но желательно использовать второй и третий. Четвертый и пятый - при необходимости, шестой и седьмой - если есть Help (а у нас его нет). Смысл аргументов такой же, как и в MsgBox'е. Итак

  • "сообщение" - это, что мы пишем для пользователя, например, "Введи свое имя" (максимальная длина приблизительно 1024 символа)
  • "заголовок окна" - это то, что выводится в верхней полосочке окна, например, "Авторизация!"
  • "данные по умолчанию" -это то что выведется в поле окна, как бы предложение юзеру
  • расстояние между левой границей экрана и левым краем экрана - ну это понятно, только расстояние это в Твипах (такая неведомая единица измерения, принятая по-умолчанию в Бейсике, я думаю, что 1 пиксель приблизительно равен 27 твипам, но зуб за это не дам)
  • то же для верхней границы - то же самое, только по вертикали

Последние два аргумента нам пока ни к чему.

Добавим теперь в нашу замечательную программу "Я - не вирус" InputBox так, чтобы при загрузке он очень строго спрашивал пароль юзера, а поскольку тот его не знает, пускал бы и так. Вставим в процедуру Form_Load, сразу после определения заголовка формы (Form1.Caption = "Я - не вирус!") следующий код:



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-08-20 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: