![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Цикл?.... а вот как - что-то совсем у меня ни как.....:) [D7, XP]
BaBayka007 © (2006-02-18 15:23:00)Всем доброго денька! Подскажите плиз, как задать цикл появления вызываемой модальной формы? Смысл следующий.....треба чтобы при неправильном введеном пароле или имени пользователя при входе в бд вылетело сообщение об ошибке (сделано) , а при её закрытии опять появлялась форма ввода данных пользователя......и так постоянно....т. е. цикл? а вот как что-то совсем у меня ни как.....:)
procedure TFEmpl.FormShow(Sender: TObject);
begin
if FLogin.ShowModal=mrOK then
begin
pFIBDatabase1.ConnectParams.UserName := FLogin.EdLogin.Text;
pFIBDatabase1.ConnectParams.Password := FLogin.EdPassword.Text;
try
pFIBDatabase1.Connected:=True;
pFIBDataSet1.Active:=True;
Except
ShowMessage('Введены неправильные имя или пароль пользователя');
end;
end;
end;
BaBayka007 (2006-02-18 20:32:00) [1]if FLogin.ShowModal=mrCancel then Application.Terminate;
....а от этой фразы вылетает ошибка в результате оной стопорится весь процесс создания формы....:(
BaBayka007 (2006-02-18 17:16:00) [2]
> Lexer
спасибо за пример.....не заметил возврата формы для ввода пароля при неправильном первоначальном вводе..... буду разбираться.....:)
Lexer (2006-02-18 16:42:00) [3]
procedure TFLogin.btnOkClick(Sender: TObject);
begin
with DataModule1, pFIBDatabase1 do
begin
ConnectParams.UserName := FLogin.EdLogin.Text;
ConnectParams.Password := FLogin.EdPassword.Text;
try
Connected:=True;
pFIBDataSet1.Active:=True;
Close;
except
ShowMessage('Введены неправильные имя или пароль пользователя');
FLogin.EdPassword.Text = '';
end;
end;
end;
procedure TFLogin.FormClose(Sender: TObject);
begin
if pFIBDatabase1.Connected then ModalResult := mrOk
else ModalResult := mrCancel;
end;
procedure TFEmpl.FormCreate(Sender: TObject);
begin
if FLogin.ShowModal=mrCancel then Application.Terminate;
end;
Сорри, если есть ошибки не проверял...
BaBayka007 (2006-02-18 16:20:00) [4]
> Lexer
> ИМХО коряво сделан коннект, каждый раз моргает ыорма ввода
> пароля.
> Может просто не закрывать форму FLogin, до тех пор пока
> не будет соединения или пользовательне нажмет Отмена.
дык......у меня вроде так и есть....вернее этого хочу добиться...а в событиях Flogin есть две процедуры:
procedure TFLogin.FormShow(Sender: TObject);
begin
edPassword.Text:='';
end;
procedure TFLogin.Button2Click(Sender: TObject);
begin
Application.Terminate;
end;
Подправил процедуру по предложению
> Desdechado
да видимо не туда и не так.....сообщение об ошибке появляется через раз , а между этим благополучно стирается набранный пасс....., а при попытке закрыть вообще чудеса....форма начинает мигать с частотой 30-60Гц....:) и закрыть можно тоько через диспетчер задач.....:(
Lexer (2006-02-18 15:47:00) [5]ИМХО коряво сделан коннект, каждый раз моргает ыорма ввода пароля.
Может просто не закрывать форму FLogin, до тех пор пока не будет соединения или пользовательне нажмет Отмена.
А в событие Close формы FLogin добавь присвоение ModalResult.
BaBayka007 (2006-02-18 15:32:00) [6]
> Desdechado
спасибо.... щас попробую......:)
> PS странно. а если юзер просто захочет выйти из программы,
> по твоей логике он не имеет этого права
а выход я ему обеспечу нажатием на другую пимпу расположенной на форме ввода данных пользователя....
Lexer (2006-02-18 15:30:00) [7]для решения данной задачи треба еще и в процессах скрывать енту прогу, а то вруг пользователь захочет выйти через диспетчер...
Mike Kouzmine (2006-02-18 15:28:00) [8]while not pFIBDatabase1.Connected do FormShow(Nil);
Desdechado (2006-02-18 15:27:00) [9]while( not pFIBDatabase1.Connected ) do
begin
//все твои манипуляции
end;
PS странно. а если юзер просто захочет выйти из программы, по твоей логике он не имеет этого права