Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.55/40: Рейтинг темы: голосов - 40, средняя оценка - 4.55
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891

Создание MainForm после успешной авторизации

22.04.2012, 00:46. Показов 8329. Ответов 56
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В общем застрял на следующем:
есть 4 формы:
MainForm, с которой происходит запуск Form2, Form3 и AuthForm, которая представляет собой форму авторизации.
Хочу, чтобы форма MainForm создавалась только после успешной авторизации (Button1Click() на AuthForm).

Итак, в Project -> Options -> Form в качестве Main form установил "AuthForm" и убрал из раздела Auto-create forms все остальные формы (MainForm, Form2, Form3).

На форме AuthForm пишу следующее:
C++
1
2
3
4
5
6
7
void __fastcall TAuthForm::Button1Click(TObject *Sender)
{
if (correctinfo) {
MainForm= new TMainForm(this);
MainForm->Show();
                    }
}
После чего вызывается создание формы MainForm:

C++
1
2
3
4
5
6
7
8
9
10
11
12
__fastcall TMainForm::TMainForm(TComponent* Owner)
    : TForm(Owner)
{
MainForm->ADOQuery1->FieldByName("id")->Visible=false;
 
for(int i=1890; i<2011; i++){
MainForm->ComboBox1->Items->Add(i);
}
for(int j=1890; j<2011; j++){
MainForm->ComboBox2->Items->Add(j);
}
}
Когда дело доходит до строчки:
C++
1
MainForm->ComboBox1->Items->Add(i);
выскакивает Debugger Exception Notification.

Такое ощущение, что ComboBox1 еще не создан, хотя вот на ADOQuery1 не ругается.
А и ComboBox1 и ADOQuery1 описаны:
C++
1
2
3
4
5
6
7
8
9
class TMainForm : public TForm
{
__published:    // IDE-managed Components
        .....
    TADOQuery *ADOQuery1;
    TComboBox *ComboBox1;
    TComboBox *ComboBox2;
        .....
};
Или проблема в другом...

Добавлено через 10 минут
Хм... Да нет, судя по Watch List'у ComboBox'ы создаются... Блин, а в чем тогда может быть проблема?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
22.04.2012, 00:46
Ответы с готовыми решениями:

Скрыть div после успешной авторизации
Все привет! В общем имеется код(смотрите ниже). Так вот, как сделать так, чтобы после успешнойавторизации форма входа скрывалась,...

Как сделать редирект на страницу после авторизации успешной?
Вопрос простой до безумия, тем более учитывая то, что у меня после авторизации уже выскакивает сообщение &quot;Успешно авторизованы&quot; ...

Скрыть форму входа на сайт, после успешной авторизации?
Как скрыть форму входа на сайт, после успешной авторизации??? И чтобы вместо входа стояла надпись &quot;Welcome, имя пользователя&quot;?? ...

56
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 02:54  [ТС]
Студворк — интернет-сервис помощи студентам
Avazart, перезалил.

Добавлено через 58 секунд
Цитата Сообщение от The_Immortal Посмотреть сообщение
Ну и смотрите какой косяк выходит
Там даже если вовремя паузу нажать, то всю форму (которую не должно быть видно) можно рассмотреть

Добавлено через 30 минут
Цитата Сообщение от The_Immortal Посмотреть сообщение
Перед тем как показать форму я делаю запрос к БД. Если с данным юзером есть записи там, то открываю форму, если нет то завершаю приложение.
Если это все поставить на OnCreate формы юзера, то все будет проигнорировано, т.к. сначала появляется форма авторизации (главная), где мы вводим логин (по которому идет запрос к БД) и пароль. А как только она появилась, то OnCreate формы юзера уже сработало и внутри этого события не нашло логина (который еще не ввели)...
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
10.06.2012, 03:09
может, до авторизации пишете
C++
1
Application->ShowMainForm=false;
, после авторизации наоборот
C++
1
Application->ShowMainForm=true;
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 03:23  [ТС]
LK, эм... Пока не уловил мыслю (у меня, если что, главная форма и есть форма авторизации - надеюсь это понятно).


C++
1
Application->ShowMainForm=true;
- на это получаю:
[BRCC32 Error] "brcc32" exited with code 1.
И еще вопрос - это где вообще прописывать? В cpp проекта?
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.06.2012, 03:41
Пока не уловил мыслю (у меня, если что, главная форма и есть форма авторизации - надеюсь это понятно).
Ну вопрос... зачем так?
Зачем диалог делать главным окном?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
10.06.2012, 03:45
угу, проекта

ну и уважаемый Avazart правильно спросил
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 04:50  [ТС]
Avazart,
Цитата Сообщение от Avazart Посмотреть сообщение
Зачем диалог делать главным окном?
Какой диалог? Под "диалогом" подразумевается форма авторизации?

Так а как иначе? Что мне сделать главной формой? Форму админа, форму юзера или что? Мне же в первую очередь надо форму авторизации показывать.


LK,

Цитата Сообщение от LK Посмотреть сообщение
угу, проекта
Вот там и ругается.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.06.2012, 05:06
Какой диалог? Под "диалогом" подразумевается форма авторизации?
Ну да а что не диалог? Странно...
Форму админа, форму юзера или что?
Почему бы и нет?
Мне же в первую очередь надо форму авторизации показывать.
Ну вот и сделаешь основную форму невидимой (а диалог видимым)
C++
1
2
3
4
5
6
7
//-----------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Application->ShowMainForm=false;
Visible=false;
}
//---------------------------------------------------------------------------
После авторизации
C++
1
Form->Visible=true;
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 05:11  [ТС]
Avazart,

Цитата Сообщение от Avazart Посмотреть сообщение
Ну да а что не диалог?
Диалог. Все-таки эта штука разница на мой взгляд с "формой авторизации"


Цитата Сообщение от Avazart Посмотреть сообщение
Ну вот и сделаешь основную форму невидимой (а диалог видимым)
Ага, понял. Спасибо! Завтра (точнее уже сегодня) попробую.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.06.2012, 05:18
А в чем разница ?
предназначенное для вывода информации и (или) получения ответа от пользователя.
А ты что просто форму налипил вместо стандартного диалога?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 05:31  [ТС]
Avazart,


Цитата Сообщение от Avazart Посмотреть сообщение
А ты что просто форму налипил вместо стандартного диалога?
Разумеется свою форму. Не люблю я всякие "стандартные диалоги".

Блин, погодите... Вы про какой конкретно диалог имеете в виду? Который после ввода логина и пароля вылазит?

Запутали Вы меня с "диалогом"
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.06.2012, 05:33
Ну например LoginDialog() ( Dblogdlg.hpp )
Миниатюры
Создание MainForm после успешной авторизации  
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 05:35  [ТС]
Avazart, значит я Вас правильно понял. Не, такими штуками не пользуюсь.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.06.2012, 05:41
Ну сути не меняет...
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
10.06.2012, 06:49
Вот написал тебе то что ты хотел.
формы.rar
логины и пароли здесь:
...\Win32\Debug\File\user.txt
или здесь
...\Win32\Release\File\user.txt
2
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 17:11  [ТС]
Ребят, сделал, я главную форму другой (не форму авторизации).
На ее создании я пишу:

C++
1
2
3
4
5
__fastcall TMainForm::TMainForm(TComponent* Owner)
    : TForm(Owner)
{
Application->ShowMainForm=false;
}
Ну и в итоге у меня никакой формы вообще не вылазит
Как заставить теперь появиться какой-нить неглавной форме? Если просто тут Show вызвать то сработает AV.


ivan.-94,

Цитата Сообщение от ivan.-94 Посмотреть сообщение
Вот написал тебе то что ты хотел
К сожалению, Вы не коснулись моей проблемы. Еще раз объясняю. Есть 2 проверки: одна (предварительная) происходит на форме авторизации (как у Вас) - проверяет корректность введенного логина и пароля. Если все ок, то показываем следующую форму. А вот на следующей форме, прежде чем ее показать (я делаю это на OnShow), происходит другая проверка (не суть важно какая, я просто флаг там поставил на неудачу) в зависимости от результатов которой надо показывать или не показывать эту форму.

В общем, отразил это в Вашем же проекте (можете сразу запустить Win32\Release\Project1.exe, ввести корректные данные и увидите проблему):
Вложения
Тип файла: rar формы.rar (191.7 Кб, 17 просмотров)
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 17:18  [ТС]
Цитата Сообщение от The_Immortal Посмотреть сообщение
Ну и в итоге у меня никакой формы вообще не вылазит
Как заставить теперь появиться какой-нить неглавной форме? Если просто тут Show вызвать то сработает AV.
Во, разобрался как:

C++
1
2
3
4
5
6
7
__fastcall TMainForm::TMainForm(TComponent* Owner)
    : TForm(Owner)
{
Application->ShowMainForm=false;
Application->CreateForm(__classid(TAuthForm), &AuthForm);
AuthForm->Show();
}
Курим дальше...

Добавлено через 1 минуту
В общем, это не решает проблемы.

Неважно какая форма будет главной, глюк этот все равно остается.
Вот выкладываю проект. Там: форма авторизации не главная. А главная та, которая показывается после авторизации (как вы и рекомендовали). Сути увы не поменяло...
Вложения
Тип файла: rar формы1.rar (190.3 Кб, 12 просмотров)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
10.06.2012, 17:25
а с инклюдами *.Н форм вы разобрались ?
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 17:30  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
а с инклюдами *.Н форм вы разобрались ?
А что с ними может быть не так?

Добавлено через 3 минуты
Цитата Сообщение от The_Immortal Посмотреть сообщение
А вот на следующей форме, прежде чем ее показать (я делаю это на OnShow), происходит другая проверка (не суть важно какая, я просто флаг там поставил на неудачу) в зависимости от результатов которой надо показывать или не показывать эту форму.
Проблема вот в этом:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void __fastcall TMainForm::FormShow(TObject *Sender)
{
     wearehere = false;
 
     if (wearehere) {
           Application->MessageBox(L"Ура, мы в системе",L"В системе",MB_OK);
     }
     else {
        Application->MessageBox(L"Зайдите позже!",L"Не в системе",MB_OK);
        Application->Terminate(); //!!! здесь закрываем прогу, 
        //но форма MainForm все равно показывается на долю секунды, а не должна.
 
        //Close();
     }
}
- вот я локализовал проблему.
0
Эксперт С++
 Аватар для Avazart
8488 / 6155 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
10.06.2012, 17:43
Пример
Вложения
Тип файла: rar Авторизация.rar (293.5 Кб, 39 просмотров)
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 17:49  [ТС]
Avazart, да блин... Ну у Вас по-другому все организовано. Мне так нельзя...
Как же донести-то до вас...

Добавлено через 59 секунд
Цитата Сообщение от The_Immortal Посмотреть сообщение
Есть 2 проверки: одна (предварительная) происходит на форме авторизации (как у Вас) - проверяет корректность введенного логина и пароля. Если все ок, то ПЫТАЕМСЯ ПОКАЗАТЬ следующую форму. А вот на следующей форме, прежде чем ее показать (я делаю это на OnShow), происходит другая проверка (не суть важно какая, я просто флаг там поставил на неудачу), в зависимости от результатов которой надо показывать или не показывать эту форму.
Могу только это продублировать. Не знаю как еще объяснить.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.06.2012, 17:49
Помогаю со студенческими работами здесь

Получение фото и имени пользователя после успешной авторизации Vk
Всем привет, у меня очередной вопрос, вот я сделал программу все отлично работает, Авторизирует на сайте Вконтакте ру. И мне хотелось бы...

Http запрос к Web-сервису после успешной авторизации
Привет всем! Нуждаюсь в помощи при создании правильного запроса. У меня клиент-приложение посылает запрос на Web-сервис, в результате в...

Как записать условие открытия второй формы после успешной авторизации в ВКонтакте?
Добрый день, у меня есть одна форма где пользователь вводит логин и пароль. Мне нужно чтобы открывалась вторая форма ЕСЛИ авторизация...

Как сделать, чтобы после успешной авторизации пропадала форма входа и выводилось нужное мне?
Написал простейшую регистрацию пользователя на пхп, теперь хочу сделать авторизицию, вроде как получилось, только теперь после нажатия на...

При успешной авторизации запустить другую форму
Здравствуйте специалисты. Не получается разобраться с кодом по авторизации. Необходимо соединиться с базой Users и при успешной авторизации...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в конфигурации КА2. Данные берутся из регистра сведений, по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru