Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Цикл?.... а вот как - что-то совсем у меня ни как.....:) [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 странно. а если юзер просто захочет выйти из программы, по твоей логике он не имеет этого права


Наверх

Титульная страница Поиск, карта сайта Написать письмо