Радик Ишмуратов дата публикации 30-01-2004 12:56 урок из цикла:
Урок 10. "Добро пожаловать или посторонним вход воспрещен"Сегодня мы повторяем оператор ветвления. Создадим программу-пароль. Она будет работать следующим образом: При загрузке программа попросит ввести пароль, если Вы введете пароль правильно, программа напишет "Добро пожаловать", если пароль неверен — ответ будет "Посторонним вход воспрещен".
1. Итак, открывайте Delphi или создавайте новый проект.
Для данной программы нам потребуются следующие элементы: компонент Label (для вывода надписей на экран), компонент Edit (для ввода пароля), 2 кнопки (подтвердить ввод и выход).
2. Поместите данные элементы на форму:
рис.1
3. Изменяем свойства Caption объектов (напомню у Edit — это свойство Text)
рис. 2
Давайте поймем логику программы: что мы хотим, как будет работать программа. При загрузке необходимо будет ввести пароль. При нажатии на кнопку ОК, программа проверяет, правильно ли был введен пароль (сравнивает строку в Edit со строкой в памяти компьютера), и если пароль верен, то выводит надпись "Добро пожаловать", а строку Edit прячет;
если неправильно, то выводит на экран окно с сообщением, что пароль неверен.
4. Пишем обработчик события для клавиши ОК (2 раза щелкните по кнопке, и Вы окажетесь в редакторе кода в нужном месте:
рис. 3
5. Запустите программу клавишей F9. Проверьте, как ведет себя программа. Я ввел неправильный пароль и нажал кнопку ОК, у меня открылось окно:
рис. 4
6. Вы не находите в нем ничего странного? Ведь мы написали оператор edit1.Text:='';, который должен был очистить строку ввода, а у меня там введенный пароль. На самом деле, все верно. Наш оператор стоит после строки ShowMessage — значит, он должен выполняться после него. И хотя компьютер вывел на экран сообщение (т.е. данное окно), работа оператора еще не завершилась. Оператор завершится, когда Вы нажмете ОК. И, действительно, как только Вы нажмете ОК, строка ввода очистится.
7. Самостоятельно: А сделайте так, чтобы строка ввода очищалась и тогда, когда окно сообщения на экране.
Давайте усовершенствуем программу так, чтобы пользователь мог лишь несколько раз ввести пароль, например, 3 раза. Чтобы решить данную проблему, нам понадобится счетчик. Счетчик — это специальная переменная, которая увеличивается на 1 при нужном событии.
Итак, счетчиком будет переменная k (я так хочу, ВЫ же можете сделать любую).
8. Когда она должна увеличиваться? Когда введен неправильный пароль. Следовательно, он должен стоять в обработчике события кнопки ОК по ветви "нет". Измените код кнопки, добавив в него строку:
k:= k+1;
Далее нам нужно проверить, совершено ли данное событие 3 раза, т.е. k=3 или нет, и если так, то закрыть форму. Записать данную процедуру можно следующим образом:
if k=3 then form1.close;
Посмотрите, ваша процедура должна быть похожа на мою:
procedure TForm1.Button1Click(Sender: TObject);
begin
if edit1.Text='qqq'
Then
begin
Label1.Caption:=' Добро пожаловать ';
edit1.Enabled:=false;
end
Else
begin
ShowMessage (' Посторонним вход воспрещен ');
edit1.Text:='';
edit1.SetFocus;
k:= k+1;
if k=3 then form1.close;
end;
end;
9. Теперь необходимо объявить новую переменную. Делается это в редакторе кода после раздела implementation. Посмотрите на рис, сделайте свой код как у меня:
рис. 5
10.Последнее, что нужно сделать, это присвоить начальное значение переменной. Где это можно сделать? В самой процедуре нельзя, потому что… ( А почему?)
Мы поступим следующим образом. Зададим начальное значение при запуске программы, т.е. при рождении формы.
11. В Инспекторе объектов выберите Form1, перейдите в раздел Events, и дважды щелкните напротив строки OnCreate (при создании). Откроется соответствующая процедура.
12.Введите оператор, как у меня:
procedure TForm1.FormCreate(Sender: TObject);
begin
k:=0;
end;
13. Запускайте программу, наслаждайтесь!
- Доделайте программу, чтобы она при неправильном пароле выводила надпись: У вас осталась 1 попытка ( или 2 или 3).
- Ответьте на вопрос: "Почему нельзя задавать начальное значение счетчика в процедуре нажатия клавиши?". Если не догадались, вставьте его туда, и посмотрите, что происходит.
- Напишите обработчик для второй кнопки Закрыть, чтобы при нажатии на нее форма закрывалась.
- Измените программу таким образом, чтобы на правильные и неправильные действия программа еще как-то реагировала (цветом формы, размером шрифта и т.д.).
Примечание:
данный и следующие уроки содержат практику, которую нужно много отрабатывать. Запомните, умение писать программы — это такое же практическое искусство, как и умение плавать. Сидя на берегу, плавать не научишься.
А поэтому несколько советов:
- не ограничивайтесь моими уроками, больше работайте самостоятельно, придумывайте себе задания, создавайте небольшие программы;
- каждый урок содержит или разъясняет один прием или тему, следовательно после каждого урока Вы сможете создавать свои собственные программы, используя новые знания.
- если Вы придумаете задания, которые лучше моих, интереснее моих, или просто желаете поделиться своими идеями и задумками, то, пожалуйста, напишите об этом.
- если Вам что-либо не понятно, или не получается, напишите, постраемся помочь.
Ждем писем с вашими собственными программами.
Обсуждение материала [ 06-01-2012 15:27 ] 9 сообщений |