![]() |
|
|
|
|
#1
|
||||
|
||||
|
Доброго всем времени суток.
Пишу программу с использованием MDI интерфейса необходимо что-бы при запуске прога вызывала окно ввода пароля, поэтому получается что 1 форма это основная форма, 2 форма это форма запроса пароля, 3 форма для смены пароля если его срок действия истек, так вот 1 форма как раз и должна являться основной формой для дочерних MDI окон, но первой должна вызываться форма №2 и если понадобиться то и 3. прописал showmodal вот тут: Код:
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Form2.ShowModal;
Application.Run;
end.Форма пароля появляется но почему-то при неправильном вводе пароля программа закрывается и все не давая пользователю повторить ввод пароля, при этом при нажатии на любые кнопки на форме 2 появляется форма 1 главного окна программы... как это исправить подскажите что-то нечего не помогаю, программу с базой прилагаю..... |
|
#2
|
||||
|
||||
|
Как вариант, можно сначала создать форму ввода пароля, и в случае успеха уже создавать остальные формы приложения:
Код:
uses
Windows,
Forms,
Controls,
uLogin in 'uLogin.pas' {frmLogin};
{$R *.res}
begin
frmLogin := TfrmLogin.Create(nil);
if frmLogin.ShowModal = mrOk
then begin
Application.Run;
end;
frmLogin.Free;
end. |
|
#3
|
||||
|
||||
|
Код:
type
TMainForm = class(TForm)
is_login: Boolean;
procedure FormCreate(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure TMainForm.FormCreate(Sender: TObject);
begin
is_login:=True;
end;
procedure TMainForm.FormActivate(Sender: TObject);
var
login_count: Integer;
begin
if is_login then
begin
is_login:=False;
login_count:=3;
while (login_count>0) do
begin
if FormLogin.ShowModal=mrOk then
begin
if (FormLogin.Edit1.Text='admin') and (FormLogin.Edit2.Text='admin') then Exit;
end else Break;
Dec(login_count);
end;
Close;
end;
end;Последний раз редактировалось NumLock, 04.05.2012 в 10:45. |