Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Запрос пароль перед загрузкой основной формы

32K
19 октября 2008 года
.:at0m:.
12 / / 07.04.2008
Хэш пароля хранится в db, пароль и имя пользователя необходимо запросить до (именно) создания основной формы. К.о. это сделать корректно? Развернутые ответы приветствуются
11
19 октября 2008 года
oxotnik333
2.9K / / 03.08.2007
OnFormCreate выводим стандартный диалог ввода логина/пароля или делаем свой диалог и на тот же OnFormCreate делаем его модально. Если неправильно введены данные, то можно TApplication::Terminate() вызвать.
3.7K
19 октября 2008 года
0nni
326 / / 24.06.2008
project - view source.
ишешу строчку вроде
 
Код:
Application.CreateForm(TForm1, Form1);

она создает главную форму, ставишь впереди условие.
386
20 октября 2008 года
newcss
297 / / 05.04.2005
Цитата: .:at0m:.
Хэш пароля хранится в db, пароль и имя пользователя необходимо запросить до (именно) создания основной формы. К.о. это сделать корректно? Развернутые ответы приветствуются



Мона сделать 2 формы =).
1) форма будет запрашивать логин и пароль. Если все ништяк пройдет, то мона создавать вторую форму =).
File->New-> Form так вроде.

 
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  Application->CreateForm(__classid(TForm2), &Form2);
  Form2->ShowModal(); //или Form2->ShowModal() , это как вам надо
}


Че-нить в этом духе... Погугли потипу Builder работа с несколькими формами =)
32K
20 октября 2008 года
.:at0m:.
12 / / 07.04.2008
Всем спасибо за советы! Использовал идеи каждого отозвавшегося.
BTW, как правильно закрыть форму запроса пароля? Пробовал
 
Код:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
  Form2->Close();

Но это приводит к закрытию всего приложения.
зы: Form1 и Form2 - формы основной программы и запроса пароля соответственно.
30K
20 октября 2008 года
VerZer
15 / / 04.08.2007
обычно к закрытию всего приложения приводит закрытие главной формы (первой созданной), а тут.. поди разбери, какая главная
можно просто спрятать форму логина (TForm::Hide()), предварительно очистив поле с паролем (ибо нефиг :) )
32K
20 октября 2008 года
.:at0m:.
12 / / 07.04.2008
Тогда при закрытии Form1 Form2 всё ещё будет жить...
30K
20 октября 2008 года
VerZer
15 / / 04.08.2007
TForm1::OnClose, Application::Terminate()
32K
20 октября 2008 года
.:at0m:.
12 / / 07.04.2008
Цитата: VerZer
TForm1::OnClose, Application::Terminate()


Это очевидно, но, имхо, некорректно: в памяти всегда держутся 2 формы

1.9K
20 октября 2008 года
GreenRiver
451 / / 20.07.2008
Сначала форму авторизации (Form2) надо убрать из списка авто-создаваемых форм: Project -> Options -> Forms.

Затем в обработчике создания главной формы пишем нечто похожее на:
Код:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
    try
    {
        TForm2 *f = new TForm2(this);
        f->ShowModal();
    }
    __finally
    {
        if (прошел_авторизацию)
        {
            delete f;
            return;
        }
        Application->Terminate();
    }  
}


Писал на скорую руку, но идея такая...
288
20 октября 2008 года
nikitozz
1.2K / / 09.03.2007
А чем собственно не устраивает вариант, предложенный Onni?
1.9K
20 октября 2008 года
GreenRiver
451 / / 20.07.2008
Цитата: nikitozz
А чем собственно не устраивает вариант, предложенный Onni?



Отличный вариант :)
Я отвечал на последний пост, про две формы в памяти...

1
20 октября 2008 года
kot_
7.3K / / 20.01.2000
Форму авторизации надо создавать обязательно создавать динамически. Это раз. Во вторых - не используйте событие Create - используйте конструктор.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог