Delphi. Учимся на примерах - [17]

Шрифт
Интервал

>  if StrToInt(ch2.Text) < num then znak2.Caption:= '<';

>  if StrToInt(ch2.Text) = num then begin znak2.Caption:= '=' ;

>  x.Caption:= IntToStr(num);

>  ShowMessage('Вы проиграли!' + #13#10 + 'В этот раз победил компьютер!' + #13#10 + ' Число угадано за ' + IntToStr(kolvo) + ' попытки');

> end;

>end;


>end.

⊚ Все файлы проекта и исполняемый файл рассмотренной программы находятся на прилагаемом к книге компакт-диске в папке Chapter09.

Глава 10

Вход в систему

Постановка задачи

Разработать программу, которая осуществляет вход в систему. Интерфейс входа в систему сначала скрывает все от пользователя, а затем просит ввести пароль. Если пароль верный, то разблокируем систему и выходим из программы. В противном случае, продолжаем требовать ввод пароля.

Разработка формы

Создайте новый проект Delphi и измените свойства формы согласно табл. 10.1.

Таблица 10.1. Свойства формы программы входа в систему

Свойство Значение Пояснение
CaptionОчистить заголовок
Align alCustom Запрет на перемещение окна
ВorderStyle bsNone Убираем границу и заголовок окна
FormStyle fsStayOnTop Окно программы будет всегда расположено поверх других окон
Position poDesktopCenter
Height 130 Высота
Width130Ширина

Разместите на форме компонент Label категории Standard и измените его свойства согласно табл. 10.2.

Таблица 10.2. Свойства компонента

Свойство Значение Пояснение
Caption Logon Надпись метки
Font.Color clNavy Цвет текста — темно-синий
Font.Size 20 Размер шрифта
Font.Style [fsBold] Начертание шрифта — полужирное
Left 16 Отступ слева
Тор0Отступ сверху

Разместите под меткой компонент Edit категории Standard и присвойте его свойству Name значение pass. Для того чтобы скрыть ввод текста (то есть, вводимый пользователем пароль), следует указать в свойстве PasswordChar символ, который будет отображаться вместо вводимого текста. Можно указать здесь символ "*" или, например, знак доллара "$".

Под полем pass разместите кнопку (компонент Button категории Standard) и присвойте ее свойству Caption значение Enter. По нажатию этой кнопки будет выполняться проверка корректности пароля.

Еще нам потребуется два компонента Timer категории System. Для первого таймера необходимо изменить значение свойства Interval на 10, для второго никаких свойств изменять не нужно.

Результат оформления формы должен соответствовать рис. 10.1.

Рис. 10.1. Форма для программы входа в систему

Разработка программного кода

Объявим в качестве закрытых членов класса формы переменную типа HWND и две процедуры, которые разработаем чуть позже:

>type

> TForm1 = class(TForm)

> …

>private

> { Private declarations }

> h1: HWND; //переменная, содержащая идентификатор окна

> procedure logon(); //блокирует все, пока пароль не будет

>  //введен верно

> procedure_check(); //проверка корректности пароля

>public

> { Public declarations }

>end;

Теперь в разделе implementation создадим сами процедуры. Сначала процедура check:

>procedure TForm1.check();

>begin

> if pass.Text = 'password' then //если пароль верный

> begin

>  //узнаем идентификатор Рабочего стола

>  h1:= FindWindow('Progman',nil);

>  //разрешаем работу с Рабочим столом

>  ShowWindow(h1, sw_show);

>  // узнаем идентификатор панели задач

>  h1:= FindWindow('Shell_traywnd',nil);

>  //разрешаем работу с панелью задач

>  ShowWindow(h1, sw_show);

>  halt; //закрываем программу

> end // иначе, выводим сообщение о неверном пароле

else ShowMessage('Wrong password!');

>end;

Процедура check проверяет корректность пароля. В данном случае в качестве пароля используется слово "password". Если в поле pass введено именно это слово, то разблокируем Рабочий стол и панель задач. После этого доступ ко всему открыт, и мы завершаем работу программы. Если же введенный пользователем текст не совпадает с корректным паролем, то мы продолжаем требовать ввод пароля.

Теперь очередь процедуры logon:

>procedure TForm1.logon();

>begin

> //узнаем идентификатор Рабочего стола

h1:= FindWindow('Progman', nil);

> ShowWindow(h1, sw_hide); //прячем Рабочий стол

> //находим панель задач

> h1:= FindWindow('Shell_traywnd', nil);

> ShowWindow(h1, sw_hide); //прячем панель задач

> {проверяем, не запущен ли диспетчер задач}

h1:= FindWindow(nil, 'Диспетчер задачWindows');

> {если да, то закрываем окно диспетчера задач}

> if (h1 <> 0) then PostMessage(h1, WM_QUIT, 1, 0);

>end;

Здесь мы блокируем Рабочий стол и панель задач, а затем проверяем, не пытается ли пользователь отключить нашу программу с помощью диспетчера задач. Если окно диспетчера задач открыто, то закрываем его.

Теперь нам почти не придется программировать — мы просто будем вызывать процедуры check и logon. При нажатии кнопки Enter вызывается процедура check:

>procedure TForm1.Button1Click(Sender: TObject);

>begin

check;

>end;

Для того чтобы не утруждать пользователя нажатиями кнопки на форме, имитируем эту операцию по нажатию в поле pass клавиши . Для этого создайте обработчик события pass.OnKeyРгеss:

>procedure TForm1.passKeyPress(Sender: TObject; var Key:Char);

>begin

> if key = #13 then // если нажата клавиша

>  check; //вызываем процедуру check

>end;

#13 —это код клавиши .

Коды символов и клавиш клавиатуры перечислены в приложении А.


Рекомендуем почитать
Графика DirectX в Delphi

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Вторая жизнь старых компьютеров

Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.


DirectX 8. Начинаем работу с DirectX Graphics

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Симуляция частичной специализации

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Обработка событий в С++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Питон — модули, пакеты, классы, экземпляры

Python - объектно-ориентированный язык сверхвысокого уровня. Python, в отличии от Java, не требует исключительно объектной ориентированности, но классы в Python так просто изучить и так удобно использовать, что даже новые и неискушенные пользователи быстро переходят на ОО-подход.