![]() |
|
|
#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. |