Сергей Парижский - Delphi. Учимся на примерах
- Название:Delphi. Учимся на примерах
- Автор:
- Жанр:
- Издательство:МК-Пресс
- Год:2005
- Город:Киев
- ISBN:ISBN 966-8806-02-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Сергей Парижский - Delphi. Учимся на примерах краткое содержание
Данная книга — продолжение предыдущей книги автора, "Delphi. Только практика". Также как и в "Delphi. Только практика", в данном издании подробно рассмотрены программы для сетей, различные шуточные программы, простые игрушки, некоторые полезные приложения, разработка приложений в стиле Windows XP. В частности, здесь можно найти такие примеры как бесплатная отправка SMS, FTP-клиент, простое шифрование, CGI-сценарии и многое другое. Описаны методы работы с системным реестром Windows и INI-файлами, а также некоторые важные аспекты программирования на системном уровне с применением функций Windows API. Для облегчения понимания программ каждый пример содержит комментарии сложных строк кода.
Книга ориентирована как на тех, кто уже имеет опыт создания приложений в Delphi, так и на начинающих программистов. Для начинающих пользователей Delphi в конце книги добавлено приложение с описанием синтаксиса языка программирования Object Pascal.
Delphi. Учимся на примерах - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
{проверяем вариант первого игрока и ставим соответствующий знак}
if StrToInt(ch1.Text) > num then znak1.Caption:= '>';
if StrToInt(ch1.Text) < num then znak1.Caption:= '<';
if StrToInt(ch1.Text) = num then begin
znak1.Caption:= '=';
x.Caption:= IntToStr(num);
ShowMessage('Вы победили!' + #13#10 + 'Число угадано за ' + IntToStr(kolvo) + ' попытки');
Exit;
end;
//если вариант первого игрока больше загаданного числа
if znak1.Caption = '>' then begin
maximum[kolvo]:= StrToInt(ch1.Text); {добавляем в массив наибольших чисел вариант первого игрока}
max();
//ищем наибольшее число
end;
//если вариант первого игрока меньше загаданного числа
if znak1.Caption = '<' then begin
minimum[kolvo]:= StrToInt(ch1.Text); {добавляем число в массив наименьших чисел, выданных первым игроком}
min();//ищем наименьшее число
end;
//после всех расчетов, компьютер выдает свой вариант
ch2.Text:= IntToStr(Random(big– small)+ small);
end;
//проверяем вариант компьютера и ставим соответствующий знак
if StrToInt(ch2.Text) > num then znak2.Caption:= '>';
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 | Высота |
Width | 130 | Ширина |
Разместите на форме компонент 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:
Читать дальшеИнтервал:
Закладка: