Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 05.05.2014, 08:26   #1
Streb
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 76
По умолчанию Авторизация пользователя

Здравствуйте, Уважаемые Форумчане!
Подскажите, пожалуйста, как правильно сделать форму авторизации.
Вернее авторизацию я сделал, но при закрытии окна авторизации, открывается основная форма.
Как сделать, чтобы при закрытии формы авторизации, закрывалась все программа.
Пытался выбрать Main Form форму авторизации (в project options), но тогда выходит ошибка: "Аргументы имеют неверный тип, выходят за пределы допустимого диапазона или вступают в конфликт друг с другом"
Вот код программы:
Код:
procedure TForm9.btn1Click(Sender: TObject);
begin
  ADOQuery1.Close;
  ADOQuery1.SQL.Text:='SELECT * FROM alp WHERE login = :p_login AND password = :p_passw';
  if (Trim(Form9.Edt1.Text) <> '') and (Trim(Form9.Edt2.Text) <> '')
  then 
  begin
    ADOQuery1.Parameters.ParamByName('p_login').Value := Form9.Edt1.Text;
    ADOQuery1.Parameters.ParamByName('p_passw').Value := Form9.Edt2.Text;
    try
      ADOQuery1.Open;
    Except
      //ShowMessage('Не удалось открыть таблицу пользователей');
      MessageBox(Handle,PChar('Не удалось открыть таблицу пользователей'),PChar('Ошибка входа'),MB_ICONINFORMATION);
      Exit;
    end;
    if ADOQuery1.RecordCount > 0
    then
    begin
      //ShowMessage('Вход успешно выполнен');
      MessageBox(Handle,PChar('Вход успешно выполнен'),PChar('Добро пожаловать!'),MB_ICONINFORMATION);
      Form9.Visible := False;
      Form1.Visible := True;
      ModalResult := mrOK
    end 
    else
    begin
      //ShowMessage('Неверный логин или пароль.Повторите ввод');
      MessageBox(Handle,PChar('Неверный логин или пароль.Повторите ввод'),PChar('Ошибка авторизации!'),MB_ICONINFORMATION);
      Form9.Edt1.Text := '';
      Form9.Edt2.Text := '';
    end;
  end
  else
    //ShowMessage('Пустые поля логин\пароль не допускаются');
    MessageBox(Handle,PChar('Пустые поля логин\пароль не допускаются'),PChar('Ошибка авторизации!'),MB_ICONINFORMATION);
end;
Streb вне форума Ответить с цитированием
Старый 05.05.2014, 08:35   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Как сделать, чтобы при закрытии формы авторизации, закрывалась все программа.
Даже при успешной авторизации? А вообще закрывайте главную форму.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.05.2014, 08:40   #3
Streb
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 76
По умолчанию

Аватар, при успешной авторизации основная форма закрываться не должна)
Здесь суть такая, что форму авторизации можно просто закрыть на крестик (не вводя данные авторизации) и откроется основная форма.
Каким образом закрывать главную форму?
Пробовал еще прописать событие FormClose, но не сильно помогло.
Не подскажите, как правильно сделать?
Streb вне форума Ответить с цитированием
Старый 05.05.2014, 08:45   #4
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Можно вместо FormClose посмотреть в сторону метода Hide.
Streletz вне форума Ответить с цитированием
Старый 05.05.2014, 08:54   #5
Streb
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 76
По умолчанию

Streletz, не работал с этим методом.
Насколько я понимаю нужно прописать
Код:
Form1.Hide;
И куда вставлять этот код? Получается на то же событие FormClose?
Streb вне форума Ответить с цитированием
Старый 05.05.2014, 08:55   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Form9 вызывается по ShowModal, который возвращает modalresult. Вот его анализируйте после закрытия Form9 и поступайте соответственно
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 05.05.2014, 09:02   #7
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Цитата:
И куда вставлять этот код?
Лучше всего его помесить в код, где обрабатывается успешная авторизация, вместо
Цитата:
Код:
Form9.Visible := False;
а Form1 (если я правильно понял, это основная форма программы, с которой работает пользователь) вызвать как
Код:
Form1.ShowModal;
После её закрытия, как уже советовали выше, анализировать значение ModalResult и выполнять соответствующие действия.
Streletz вне форума Ответить с цитированием
Старый 05.05.2014, 09:28   #8
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

Какой смысл создавать окна если результат входа не известен, естественно незачем, а раз так то и закрывать нечего в таком случае.
Автору надо перестроить логику входа тогда и вопросов не будет.
eval вне форума Ответить с цитированием
Старый 05.05.2014, 10:13   #9
Streb
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 76
По умолчанию

Цитата:
Сообщение от Streletz Посмотреть сообщение
Лучше всего его помесить в код, где обрабатывается успешная авторизация, вместо

а Form1 (если я правильно понял, это основная форма программы, с которой работает пользователь) вызвать как
Код:
Form1.ShowModal;
После её закрытия, как уже советовали выше, анализировать значение ModalResult и выполнять соответствующие действия.
Проделал описанное, ничего не изменилось.
Может я что-то не понял.
Поясните подробнее что это значит.
Цитата:
Сообщение от Streletz Посмотреть сообщение
После её закрытия, как уже советовали выше, анализировать значение ModalResult и выполнять соответствующие действия.
Streb вне форума Ответить с цитированием
Старый 05.05.2014, 10:28   #10
Streletz
Старожил
 
Регистрация: 03.01.2014
Сообщений: 2,870
По умолчанию

Модальные формы в Delphi
Streletz вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Авторизация пользователя Kassiopea PHP 23 24.10.2013 21:52
Авторизация пользователя revaldo666 Microsoft Office Access 12 16.12.2012 00:29
Авторизация пользователя stevieg БД в Delphi 17 04.10.2012 15:47
Авторизация пользователя StudUL C++ Builder 13 06.06.2012 18:09
Авторизация пользователя mar4elo PHP 10 31.03.2011 19:28