Рассмотрим один очень полезный пример.
Рассмотрим один очень полезный пример. Нам надо еще до запуска программы предложить пользователю ввести некий пароль. Если пароль введен верно, то отображается главное окно проекта и пользователь может работать. Если пароль введен неверно, то программа немедленно завершает свою работу.
Запускаем delphi и создаем новый проект. В новом проекте окно Form1 будет главным окном проекта.
Для события создания окна OnCreate пишем:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowMainForm:=false; //не отображать главное окно приложения
end;
Выбираем пункт меню "New Form" из меню "File". Появляется новое окно Form2. Его мы будем использовать в качестве ввода пароля. Оформляем его для этого надлежащим образом. Пример вы видите на рисунке.
Уменьшаем окно так, чтобы оно по размерам было как у подобных окон.
Свойство BorderStyle устанавливаем в bsSingle. При этом размер окна во время работы программы будет постоянен.
Свойство BorderIcons. Подсвойства biMinimize и biMaximize устанавливаем в false. Это окончательно недопустит изменение состояния окна (свертывание, разворачивание на весь экран).
В свойстве Caption пишите любую на ваше усмотрения понятную фразу, например "Введите пароль".
Свойство Position в значение poDesktopCenter. При этом окно при любом экранном разрешение всегда изначально будет расположено посередине экрана.
На странице палитры компонентов Standart выбираем и устанавливаем в форму компонент TPanel. Убираем у него значение Caption, придаем свойству Align значение alTop и окончательно изменяем его размер на четь больше половины окна.
На странице Additional выбираем компонент TBitBtn и устанавливаем в форму две кнопки, ниже панели.
Для первой кнопки свойство Kind в bkOk, для второй bkCancel.
Для первой кнопки свойство Caption оставляем в для всех понятное значение Ok, для второй пишем "Отмена".
На странице Standart выбираем и устанавливаем на компонент Panel компонент TEdit.
Для компонента Edit1 меняем свойство PasswordChar на знак * (звездочка). Это принятый во всех программах символ ввода пароля. При наборе пароля вместо символов будет отображаться звездочки.
Для компонента Edit1 убираем значение Caption.
Для Form2 в свойстве Icon подбираете соответствующую иконку.
Мы только что оформили полностью готовое окно для ввода пароля. Я же могу предложить вашему внимание свой вариант, который более красочно оформлен.
Вы всегда можете оформлять свои приложения по своему. Не обязательно придерживаться каких-либо правил по оформлению программы, но тем не менее пользователь не должен теряться при виде ваших "фантазий" и должен четко представлять, что от него требуется.
Дальше делаем вызов окна ввода пароля на экран. Поскольку мы с вами убрали свойство вывода главного окна, то после запуска программы на экране не будет ничего. Нам же нужно вывести окно запроса пароля, и мы это делаем с помощью программы DPR. Вызываем ее на экран с помощью пункта меню "View Source" из меню
"Project". В строке до
Application.Run пишем:
Form2.Show;
Еще до запуска приложения, но после создания всех окон на экран выводится окно Form2.
Дальше переключаем редактор кода на модуль Unit2, вызываем проектируемое окно клавишей F12, в инспекторе объектов для компонента Form2 (проектируемая форма) создаем реакцию на событие закрытия окна OnClose и в самой процедуре пишем:
Procedure TForm2.FormClose (Sender: TObject; var Action: TCloseAction);
begin
If Form2.ModalResult=mrOk then //если пользователь нажал на кнопку Ok, то
If Edit1.Text='programming.dax.ru' then //если набран необходимый пароль, то
begin
Form1.Show; //показать главное окно
Exit; //выйти из этой процедуры
end;
Application.Terminate; {если все вышеуказанные условия не выполняются, то остановить программу}
end;
Для кнопки BitBtn1 реакция на событие OnClick
procedure TForm2.BitBtn1Click(Sender: TObject);
Begin
Form2.ModalResult:=mrOk; //результат работы этого окна
Close; //закрыть это окно
end;
Для кнопки BitBtn2 событие OnClick
procedure TForm2.BitBtn2Click(Sender: TObject);
begin
Close; //закрыть это окно
end;
Поскольку мы окно Form2 вызываем командой Show, а не ShowModal, то присваивание результата работы окна не приведет к автоматическому закрытию и вызову процедуры OnClose. Поэтому после этой команды следует команда закрытия окна Close.