Форма для запроса пароля
Если программа должна быть защищена от несанкционированного использования, то необходимо предусмотреть проверку правильности введенного пользователем пароля в начале работы приложения. При неверном пароле приложение закрывается, не позволяя пользователю работать с ним.
Форма для запроса пароля может содержать всего лишь один компонент - однострочный редактор Edit, в котором будет набираться пароль. Поскольку эта форма должна появляться на экране до того, как станет видимой главная форма, то форму для запроса пароля нужно активизировать при наступлении событияOnShow в главной форме.
Форма для запроса пароля создается добавлением в проект обычной формы командой File New Form. Затем следует несколько уменьшить размеры формы изадать ее свойства
Name = fmPASSWORD имя формы
BorderStyle = bsDialog диалоговоеокно (размер не может изменяться)
Position = poScreenCenter форма появится в центре экрана
Caption = Введите пароль и нажмите Enter
Для компонента Edit, помещенного в центре формы, задать свойства
Name = edPASSWORD имя компонента
Text = очистить свойство
PasswordChar= * символы, скрывающие набираемый пароль
В процедуре обработки события OnKeyDown этого компонента должны выполняться следующие операторы, проверяющие правильность введенного пароля:
if (Key = VK_RETURN) then {Нажата клавиша Enter}
begin
if (edPASSWORD.Text<>'Welcome') then {пароль - слово Welcome}
begin
ShowMessage('Пароль неверный!');
Application.Terminate {завершить работу приложения}
end
else
Close;{пароль верный - закрыть форму для ввода пароля и продолжить работу}
end;
П
if (edPASSWORD.Text<>'Welcome') then {пароль - слово Welcome}
begin
ShowMessage('Пароль неверный!');
Application.Terminate {завершить работу приложения}
end
Чтобы сохранить проект, дополненный формой для запроса пароля, нужно выбрать команду File | Save All и задать имя PASSWORD для файла с модулем формы fmPASSWORD. Модуль PASSWORD нужно подключить к модулю главной формы, сначала выделив главную форму, а затем выбрав команду File | Use Unit и указав модуль PASSWORD в диалоговом окне Use Unit.
Для активизации созданной формы в главной форме задается процедура обработки события OnShow, в которую помещается операторы
fmPASSWORD.ShowModal; {активизировать форму для запроса пароля}
fmPASSWORD.Free; {уничтожить форму и освободить занятую для нее память}
Форма-заставка
Во многих приложениях ( например, в системе Delphi)при их запуске сначала на экране появляется форма-заставка, содержащая логотип приложения. Назначение этой формы чаще всего заключается в том, чтобы пользователь "изучал" (созерцал) содержащуюся на форме информацию, на время начальной загрузки и настройки программы.. Тогда эта маскирующая форма-заставка (которая маскирует, скрывает подготовительные операции в начале работы приложения) должна закрываться не раньше, чем закончатся эти операции.
Но иногда форма-заставка имеет чисто информационное назначение. В этих случаях желательно, чтобы такая информирующая форма-заставка немедленно закрывалась при любых действиях пользователя или закрывалась самостоятельно через какое-то время без каких-либо действий со стороны пользователя.
Создание формы-заставки
Чтобы создать форму-заставку, нужно добавить в проект обычную форму командой File New Form и настроить эту форму, задав в окне инспектора объектов значения таким ее свойствам, какName, BorderStyle, FormStyle, Position:
Name = fmSplash имя формы
BorderStyle = bsNone нет полосы заголовка
FormStyle = fsStayOnTop форма находится поверх других окон
Position = poScreenCenter форма появится в центре экрана
После этого форму нужно сохранить командой File Save As, задав для файла модуля формы подходящее имя (например,SPLASH).
Далее нужно разместить на форме подходящий рисунок, выбрать который можно из папки F:\Program Files\Common Files\Borland Shared\Images\Splash.
Разместить рисунок можно разными способами, например, нарисовав его на канве или расположив его в компоненте Image.
Размещение рисунка на канве. Для размещения рисунка на канве в разделе public класса формы TfmSplash необходимо описать графический объект Gr типаTBitmap для хранения двоичного кода рисунка и предусмотреть инициализацию этого объекта в процедуре обработки событияOnCreate формыfmSplash и отображение графического объекта Gr на канве формыfmSplash в процедуре обработки событияOnPaint формыfmSplash:
type
TfmSplash = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
Gr : TBitmap;
end;
. . . . . .
{Процедура обработки событияOnCreate}
procedure TfmSplash.FormCreate(Sender: TObject);
begin
Gr := TBitmap.Create;
Gr.LoadFromFile('F:\Program Files\Common Files\Borland Shared\Images\Splash\256color\factory.bmp');
end;
{Процедура обработки событияOnPaint}
procedure TfmSplash.FormPaint(Sender: TObject);
begin
Canvas.Draw(0,0,Gr);{нарисовать рисунок, начиная с точки с координатами (0,0)}
end;
Недостаток этого способа состоит в необходимости подгонять вручную размеры рисунка и клиентской области формы fmSplash.
Размещение рисунка в компоненте Image. Компонент Image, расположенный на страницеAdditional палитры компонентов, предназначен для отображения графических объектов, в частности, рисунков.
Разместив компонент Image на форме fmSplash, следует задать или проверить значения его свойств Picture, AutoSize, Stretch, Center, Align.
P
Рис.3.
Окно Picture Editor Рис.4.
Окно загрузки графического файла
После выбора в окне Load Picture графического файла и нажатия кнопки Открыть изображение появляется в окне Picture Editor (рис.5), а при нажатии кнопки ОК в этом окне выбранный рисунок отобразится в компонентеImage (рис.6).
Если установить свойство AutoSize, равным True, то размер компонентаImage будет автоматически подгоняться под размер помещенного в него рисунка. Если же свойствоAutoSize установлено, равным False, то рисунок может не поместиться в компонент или, наоборот, площадь компонента может оказаться намного больше площади рисунка.
Свойство Stretch позволяет подгонять не компонент под размер рисунка, а рисунок под размер компонента. Если значение этого свойства равно True,то рисунок займет всю площадь компонента.
Рис.5.
Окно Picture Editor после
загрузки рисунка
Рис.6. Форма-заставка
с рисунком
Свойство Align, установленное вalClient,подгоняет размер компонентаImageпод размер формы.
Информирующая форма-заставка
Чтобы созданная форма-заставка закрывалась при нажатии любой клавиши на клавиатуре или при щелчке мышью в области формы, для формы fmSplash и размещенного на ней компонентаImageнеобходимо задать процедуры обработки событийOnKeyDown иOnMouseDown, в которых вызывается метод Close, закрывающий форму-заставку. Для формы fmSplash следует также задать свойство KeyPreviewравнымTrue, чтобы форма перехватывала все события компонентов, связанные с нажатием клавиш.
Чтобы форма-заставка закрывалась через определенный промежуток времени самостоятельно, в форму fmSplash нужно добавить компонент Timer со страницы System палитры компонентов. Этот невизуальный компонент позволяет отсчитывать интервалы времени, величина которых задается значением свойства Interval в миллисекундах. По окончании заданного интервала времени наступает событиеOnTimer.
Если необходимо, чтобы форма-заставка автоматически закрывалась через 5 секунд после активизации, нужно для компонента Timer задать значение свойства Interval, равное 5000, в процедуру обработки события OnTimer включить вызов метода Close для закрытия формы-заставки, адля формы-заставкивпроцедуру обработки события OnClose вставить оператор
Action := caFree
который действие, приводящее к уничтожению формы-заставки и освобожлению занимаемой формой памяти.
Чтобы активизировать информирующую форму-заставку, следует в главной форме предусмотреть процедуру обработки события OnShow, которая включает в себя один оператор
fmSplash.ShowModal;
Событие OnShow наступает перед тем, как главная форма становится видимой, поэтому в момент выполнения указанного оператора она еще не видна. Оператор открывает форму-заставку как модальную, передает ей управление, и дальнейшее выполнение программы в модуле главной формы приостанавливается до тех пор, пока модальная форма не будет закрыта. После закрытия модальной формы выполнение программы продолжится, и главная форма станет видимой.
Маскирующая форма-заставка
Чтобы форма-заставка находилась на экране во время начальной загрузки и настройки программы, а затем исчезала, нужно исключить форму fmSplash из списка автоматически создаваемых формкомандой Project | Options, загрузить в текстовый редактор системыDelphiфайл проекта командойProject | View Source и дополнить раздел операторов этого файла операторами, обеспечивающими создание, активизацию и уничтожение формыfmSplash:
. . . . .
begin
fmSplash := TfmSplash.Create(Application); {Создать форму}
fmSplash.Show; {Показать форму}
fmSplash.Update; {Обновить рисунок}
Application.Initialize;
. . . . . .
. . . . . .
fmSplash.Free; {Уничтожить форму}
Application.Run;
end.