Рассмотрим один очень полезный пример.
Рассмотрим один очень полезный пример. Нам надо еще до запуска программы предложить пользователю ввести некий пароль. Если пароль введен верно, то отображается главное окно проекта и пользователь может работать. Если пароль введен неверно, то программа немедленно завершает свою работу.
Запускаем delphi и создаем новый проект. В новом проекте окно Form1 будет главным окном проекта.
Для события создания окна OnCreate пишем:
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.ShowMainForm:=false; //не отображать главное окно приложения
end;
Выбираем пункт меню "New Form" из меню "File". Появляется новое окно Form2. Его мы будем использовать в качестве ввода пароля. Оформляем его для этого надлежащим образом. Пример вы видите на рисунке.
Мы только что оформили полностью готовое окно для ввода пароля. Я же могу предложить вашему внимание свой вариант, который более красочно оформлен. Вы всегда можете оформлять свои приложения по своему. Не обязательно придерживаться каких-либо правил по оформлению программы, но тем не менее пользователь не должен теряться при виде ваших "фантазий" и должен четко представлять, что от него требуется.
Дальше делаем вызов окна ввода пароля на экран. Поскольку мы с вами убрали свойство вывода главного окна, то после запуска программы на экране не будет ничего. Нам же нужно вывести окно запроса пароля, и мы это делаем с помощью программы 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.