В этой части мы с Вами сделаем элемент PasswordBox, который будет служить для ввода пароля.
Внешний вид у него будет как на рис. 1
Этот элемент служит специально для ввода пароля и работать он будет следующим образом. Пользователь вводит в этот элемент пароль. Если введённый пароль неправильный, то наш элемент заблокируется на одну секунду. Во время блокировки в элемент невозможно будет ввести никакого другого нового пароля. Через секунду блокировка будет снята, и пользователь сможет попытаться ввести пароль ещё раз. При вторичном неправильном вводе пароля наш ActiveX-элемент снова заблокируется, но уже на более длинный промежуток времени - на две секунды. После этого пользователь сможет опять повторить попытку. И так далее - пользователь (или шпион ;)) пытается подобрать пароль, и каждый раз при неправильном вводе наш элемент будет блокироваться на всё большее и большее время. Это все будет продолжаться до тех пор, пока пользователь не исчерпает отведённого ему числа попыток. После этого наш элемент заблокируется навсегда.
Разработчик программы, в которой будет использоваться Ваш ActiveX-элемент, сможет на этапе разработки задать параметры, перечисленные в следующей таблице:
Параметр | Тип | Пояснения |
MaxAttempt | Integer | Параметр, задающий количество попыток на ввод правильного пароля. При исчерпании этого числа генерируется событие NoAttempts (смотри ниже) |
Password | String | Параметр, задающий пароль. При вводе пользователем этого пароля генерируется событие RightPassword (смотри ниже). |
Наряду с пользовательскими свойствами наш ActiveX-элемент будет поддерживать и пользовательские события, которые перечислены в следующей таблице:
Событие | Пояснение |
NoAttempts | Возникает, когда пользователь исчерпает максимальное число попыток, заданное в свойстве MaxAttempt (смотри выше). |
RightPassword | Возникает, когда пользователь введёт пароль правильно (т. е. введённый пользователем пароль совпадет со значением параметра Password). |
Возможное применение этого элемента следующее - программист размещает его на форме, которая появляется при запуске приложения. Больше на этой форме ничего не располагается. Далее для в обработчике события NoAttempts пишется, например, следующий код:
Private Sub PasswordBox1_NoAttempts() MsgBox "Попыток больше нет! Выход из программы." End End Sub
Этот код будет выполняться, когда пользователь исчерпает число попыток. В этом случае произойдёт просто выход из программы с показом соответствующего сообщения.
В обработчике же события RightPassword можно написать что-то приблизительно такое:
Private Sub PasswordBox1_RightPassword() MsgBox "Пароль правильный. Запуск программы." frmMain.Visible = True End Sub
Этот фрагмент будет выполняться в случае, когда пользователь введёт правильный пароль. Появится MsgBox с соответствующим сообщением, и затем выполнение программы продолжится - появится основная форма нашей программы (здесь она названа frmMain).
Подчеркнём, что в событиях NoAttempts и RightPassword для нашего ActiveX-элемента программист (тот, который будет использовать Ваш ActiveX-элемент) может написать всё что угодно. Это уже его дело, как он захочет обрабатывать эти события. Здесь наблюдается полная аналогия с тем, что, скажем, для события Click какой-нибудь кнопки Command1 Вы можете написать любой нужный Вам код (или вообще ничего не писать). Это уже Ваше личное дело, как это событие использовать. Точно также дело программиста, использующего ActiveX-элемент (а не Ваше, как разработчика ActiveX-элемента), что именно написать в обработчиках его событий.
Итак, приступаем к созданию нашего ActiveX-элемента PasswordBox.
Далее