FormLogin

Алексей Ходыкин
Дата: 03.05.2011 11:21:24
BDE Delphi7 TTable
Необходимо в базе хранить табличку под паролем в которой пары "пользователь-пароль"
при запуске приложения производить проверку
делаю так:
создаю форму, подключаю к основной форме проекта

на созданной форме так:
procedure TFormLogin.BitBtnOKClick(Sender: TObject);
begin
  //подключаемся к базе
  Database1.Connected:=true;
  //открываем таблицу
  Table1.Active:=true;
  //проверяем пару логин-пароль
  If Table1.Locate('UserName',trim(EditUser.Text),[loCaseInsensitive]) then
    if Table1.FieldByName('Password').Value=trim(EditPassword.Text) then
    begin
      //записываем дату последнего входа
      Table1.Edit;
      Table1.FieldByName('DateLast').AsDateTime:=now;
      Table1.Post;

      FormLogin.Close;

    end
    else
    ShowMessage('Пара "пользователь-пароль" введены не правильно!')
  else
    ShowMessage('Пара "пользователь-пароль" введены не правильно!');

end;

procedure TFormLogin.BitBtnCancelClick(Sender: TObject);
begin
  Application.Destroy;
end; 

на основной форме проекта так:
procedure TForm1.FormShow(Sender: TObject);
begin
FormLogin.ShowModal;
end;

Как "убить" приложение при нажатии кнопки "отмена"
т.е вместо Application.Destroy;

???
SQLap
Дата: 03.05.2011 11:26:24
Алексей Ходыкин,

ловить из главной формы ModalResult твоей FormLogin и закрывать главную если.
Evgen2010
Дата: 03.05.2011 11:26:31
Алексей Ходыкин,

Может, лучше прописать проверку логина/пароля в файле проекта(<Имя программы>.dpr), например, еще до запуска главной формы.
Сергей Козинцев
Дата: 03.05.2011 11:29:49
Алексей Ходыкин,

Form1.Close;
почему бы не так?
Алексей Ходыкин
Дата: 03.05.2011 11:32:53
Сергей Козинцев
Алексей Ходыкин,

Form1.Close;
почему бы не так?

есть несколько небольших проектов
хочу этот модуль с формой подключить и для них
там главные формы по-другому называются
неудобно
Евгений Переверзев
Дата: 03.05.2011 11:32:54
Алексей Ходыкин,
1. анализируй результат вызова формы
if FormLogin.ShowModal <> mrOk then ... ; 

2. лучше сделать эту проверку не в главной форме, а в теле проекта (см. исходный код проекта), там можно просто
if FormLogin.ShowModal <> mrOk then Halt(1);
естественно незабудь правильно описать переменные для форм :)
Алексей Ходыкин
Дата: 03.05.2011 11:40:03
Евгений Переверзев
Алексей Ходыкин,
1. анализируй результат вызова формы
if FormLogin.ShowModal <> mrOk then ... ; 

2. лучше сделать эту проверку не в главной форме, а в теле проекта (см. исходный код проекта), там можно просто
if FormLogin.ShowModal <> mrOk then Halt(1);
естественно незабудь правильно описать переменные для форм :)

тогда уж проще
procedure TFormLogin.BitBtnCancelClick(Sender: TObject);
begin
FormLogin.Close;
Form1.close; 
end;
какая разница. всё равно вносить изменения в проекты
Anatoly Podgoretsky
Дата: 03.05.2011 12:11:02
Заботишься о хакерах, никакого хранения паролей, особенно так как ты.
DetSimen
Дата: 03.05.2011 12:18:26
Алексей Ходыкин, ты хотя бы в базе не сами пароли храни, а их хэши, что-ли, и вычисляй по ходу. И блокируй юзера, после, допустим, пяти раз неправильно введенного пароля. Хоть какая-то видимость секретности. А по существу: Halt(Code) принудительно завершает программу, правда не заботясь об освобождении памяти. Но так как ты в самом начале пароль проверяешь, я думаю, это не критично.
Barmaley57
Дата: 03.05.2011 12:49:40
DetSimen
А по существу: Halt(Code) принудительно завершает программу, правда не заботясь об освобождении памяти. Но так как ты в самом начале пароль проверяешь, я думаю, это не критично.
Не надо пугать народ :)