Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабы / DELPHI / ВМИПЛаб8.doc
Скачиваний:
19
Добавлен:
16.04.2013
Размер:
390.66 Кб
Скачать

Форма для запроса пароля

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

Форма для запроса пароля может содержать всего лишь один компонент - однострочный редактор 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;

П

равильность пароля следует также проверять и при попытке закрыть форму щелчком мышью по кнопке в полосе заголовка окна. Для этого в процедуру обработки событияOnClose для формы fmPASSWORD нужно поместить операторы

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. Окно загрузки графического файла

icture - это свойство, которое содержит изображение (рисунок). Чтобы задать значение этому свойству, нужно нажать на кнопку с многоточием около этого свойства или сделать двойной щелчок на размещенном компоненте Image. В результате этих действий откроется окно Picture Editor (рис.3), позволяющее нажатием кнопкиLoad загрузить в свойствоPicture какой-нибудь графический файл (рис.4).

После выбора в окне Load Picture графического файла и нажатия кнопки Открыть изображение появляется в окне Picture Editor (рис.5), а при нажатии кнопки ОК в этом окне выбранный рисунок отобразится в компонентеImage (рис.6).

Если установить свойство AutoSize, равным True, то размер компонентаImage будет автоматически подгоняться под размер помещенного в него рисунка. Если же свойствоAutoSize установлено, равным False, то рисунок может не поместиться в компонент или, наоборот, площадь компонента может оказаться намного больше площади рисунка.

Свойство Stretch позволяет подгонять не компонент под размер рисунка, а рисунок под размер компонента. Если значение этого свойства равно True,то рисунок займет всю площадь компонента.

Рис.5. Окно Picture Editor после загрузки рисунка

Рис.6. Форма-заставка с рисунком

СвойствоCenter, установленное вTrue, центрирует изображение на площади компонента, если размер компонента больше размера рисунка.

Свойство 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.

Соседние файлы в папке DELPHI