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

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

22.04.2012, 00:46. Показов 8545. Ответов 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
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
10.06.2012, 18:11
Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
else {
        Application->MessageBox(L"Зайдите позже!",L"Не в системе",MB_OK);
//        MainForm->Hide();
        MainForm->Close();
        Application->Terminate();
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 18:40  [ТС]
LK, все равно MainForm выскакивает

Да и
C++
1
2
MainForm->Close();
Application->Terminate();
особого смысла не имеет, т.к. при
C++
1
MainForm->Close();
- как раз и происходит
C++
1
Application->Terminate();
, т.к. MainForm - является главной формой...



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

Добавлено через 2 минуты
Или же просто делать эту проверку на не OnShow, а на другом событии... Но вопрос на каком именно? На каком событии (кроме OnCreate) не будет на долю секунды показываться текущая форма (при завершении приложения)?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
10.06.2012, 19:00
происходит другая проверка (не суть важно какая
может, все же важно ? не оно ли не дает закрыть програму?
А Application и MainForm - это немного разные вещи, имхо.

Добавлено через 1 минуту
На каком событии (кроме OnCreate) не будет на долю секунды показываться текущая форма (при завершении приложения)?
да кто его знает, на какой форме что у вас творится .

Добавлено через 2 минуты
А так я просто вызываю событие OnShow, когда мне надо и все.
Вы не можете вызывать это событие, в отличие, например, от вызова нажатия кнопки, оно происход само при появлении формы, независимо от вашего желания, вы можете только что-нибудь сунуть в это событие.

Добавлено через 3 минуты
гм... это
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
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
10.06.2012, 19:16  [ТС]
LK,


Цитата Сообщение от LK Посмотреть сообщение
да кто его знает, на какой форме что у вас творится .
В смысле "кто знает"? Я выложил кусок кода и проект "формы1" - они полностью отражают проблему.


Цитата Сообщение от LK Посмотреть сообщение
Вы не можете вызывать это событие
Интересно... А вот скажем следующая строчка что делает, не подскажите?
C++
1
this->FormShow(Sender);
Я имел в виду повторно вызывать, когда необходимо.


Цитата Сообщение от LK Посмотреть сообщение
вы пишете для главной формы при открытой и работающей еще какой-нибудь левой дочерней форме, я так понял? если так, то нечего удивляться, что появляется главная форма.
Да, верно поняли. Вы же сами мне посоветовали так сделать))). Изначально у меня данная форма была не главной и проблема все равно оставалась.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
10.06.2012, 19:36
А написать все это в обработчик закрытия "еще какой-нибудь дочерней форме" не пробовали?

Добавлено через 31 секунду
Я не слежу за количеством и зависимостями ваших форм .
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
10.06.2012, 23:34
Цитата Сообщение от The_Immortal Посмотреть сообщение
можете сразу запустить Win32\Release\Project1.exe, ввести корректные данные и увидите проблему:
У вас в коде небольшая шибка
C++
1
2
3
4
5
6
7
8
9
10
11
void __fastcall TMainForm::FormShow(TObject *Sender)
{
     if (wearehere) {
           Application->MessageBox(L"Ура, мы в системе",L"В системе",MB_OK);
     }
     else {
        Application->MessageBox(L"Зайдите позже!",L"Не в системе",MB_OK);
        Application->Terminate();
        //Close();
     }
}
Нужно
C++
1
if (!wearehere)
Иначе у вас вход никогда не произведёться.

Добавлено через 7 минут
Цитата Сообщение от The_Immortal Посмотреть сообщение
Сообщение от The_Immortal
Есть 2 проверки: одна (предварительная) происходит на форме авторизации (как у Вас) - проверяет корректность введенного логина и пароля. Если все ок, то ПЫТАЕМСЯ ПОКАЗАТЬ следующую форму. А вот на следующей форме, прежде чем ее показать (я делаю это на OnShow), происходит другая проверка (не суть важно какая, я просто флаг там поставил на неудачу), в зависимости от результатов которой надо показывать или не показывать эту форму.
Могу только это продублировать. Не знаю как еще объяснить.
Вы ввели логин пароль далее увас на форм1 проверяеться какоето условие и в зависимости от этого паказываеться форм1 или нет?
Если это так то я непонемаю зачем такой велосипед?
Ведь всё можно проверить в форме авторизации, или вы хотите переходя с любой другой формы на форм1 проверять определённые условия и отоброжать или неотоброжать?
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
11.06.2012, 00:56  [ТС]
ivan.-94,

Цитата Сообщение от ivan.-94 Посмотреть сообщение
Иначе у вас вход никогда не произведёться.
Ну что же Вы Это называется моделирование проблемы. Я так специально сделал.


Цитата Сообщение от ivan.-94 Посмотреть сообщение
Ведь всё можно проверить в форме авторизации
Увы, в моем случае нельзя. Потому что у меня проверка должна происходить именно на следующей форме, а не на форме авторизации...
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
11.06.2012, 01:23
Цитата Сообщение от The_Immortal Посмотреть сообщение
Увы, в моем случае нельзя. Потому что у меня проверка должна происходить именно на следующей форме, а не на форме авторизации...
Раскажите свою задумку а то так как то пальцем в небо тыкать неполучиться
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
11.06.2012, 01:29  [ТС]
ivan.-94,
Цитата Сообщение от ivan.-94 Посмотреть сообщение
Раскажите свою задумку
Я не могу полностью посвятить в задачу, т.к. это слишком много информации.

Я просто ставлю перед фактом, что нужно именно так, а не иначе. А уж почему так и не иначе - это не столь важно на самом деле.
Завтра постараюсь представить проблему иначе и создам отдельную тему, а то тут уже каша начинается...
0
Я Фоюмчанин ? дааааа)
 Аватар для ivan.-94
213 / 204 / 23
Регистрация: 02.06.2012
Сообщений: 1,424
Записей в блоге: 12
11.06.2012, 01:32
Цитата Сообщение от The_Immortal Посмотреть сообщение
Завтра постараюсь представить проблему иначе и создам отдельную тему, а то тут уже каша начинается...
С этим я согласен.
1
Эксперт С++
 Аватар для Avazart
8489 / 6156 / 615
Регистрация: 10.12.2010
Сообщений: 28,683
Записей в блоге: 30
11.06.2012, 01:38
создам отдельную тему,
Может лучше и проект заного начать писать
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.06.2012, 01:45
вот именно - четкую блок-схему нужного
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
11.06.2012, 01:56  [ТС]
Ребята... Вы чего-то многого хотите, не?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.06.2012, 02:42
The_Immortal, хотите здесь как бы вы ? Все остальные не очень активно пытаются угадать .
1
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
11.06.2012, 02:53  [ТС]
LK,
Цитата Сообщение от LK Посмотреть сообщение
не очень активно
Во-во!

По сабжу: кажется невозможно это сделать (скрыть форму на событие OnShow, OnActivate и им подобным - она все равно будет показывать на долю секунды). Скрытие формы надо делать либо на OnCreate, либо заранее с другой формы. А более никак.

Так что можно считать, что проблему исчерпали Типа...

На самом деле, мне вас стало жалко и я решил отстать. Хотя... Я уж знаю сколько терпения у Avazart'а - он порою готов до самого утра траблы решать А уж про LK вообще молчу!

Но не в этот раз...

Усем спасибо, господа!
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
11.06.2012, 03:24
Просто у вас изначально неверный подход - делать ваши дела надо до показа главной формы и не в событиях главной фррмы, и это обсуждалось.

если при старте сделать форм2 - шоу, мейнформ - хайд/фолс, и потом терминировать апликатион - главной формы не может быть видно
0
1569 / 505 / 48
Регистрация: 04.04.2009
Сообщений: 1,891
11.06.2012, 20:47  [ТС]
LK,

Цитата Сообщение от LK Посмотреть сообщение
Просто у вас изначально неверный подход - делать ваши дела надо до показа главной формы и не в событиях главной фррмы
Согласен.


Цитата Сообщение от LK Посмотреть сообщение
если при старте сделать форм2 - шоу, мейнформ - хайд/фолс, и потом терминировать апликатион - главной формы не может быть видно
А можно уточнить "потом" это когда? Мне вот, например, это надо делать на OnShow мейнформ ну и соответственно мейнформ все равно показывается на долю секунды.
Таким образом, "потом" это не OnShow - так?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.06.2012, 20:47

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
57
Ответ Создать тему
Новые блоги и статьи
28. КОнкретное развертывание плана номер 1 из поста номер 27
anaschu 22.06.2026
Можно ли из модели получить конкретные строительные требования? Честно — напрямую из текущей модели такие ответы не получить. Но цепочка логики есть, и она не такая длинная. Где разрыв . . .
27. Планы на разработку функциональных требований к строительству внутри модели пищеблока (или не только его?)
anaschu 22.06.2026
Что уже реализовано и даёт конфликты «бесплатно» Самый простой конфликт уже работает — конфликт за ресурс-работника. Заданий больше, чем доступных поваров → очередь в queue1. Это прямое отражение. . .
26. мед мат модель.Какие типы конфликтов функциональных требований можно рассчитать через ДЕС-моделирование (СМО) в AnyLogic?
anaschu 22.06.2026
Что ДЕС/ СМО умеет считать напрямую: Конфликты за ресурсы (очереди, узкие места). Несколько типов агентов (повара, учителя, рабочие, пациенты) претендуют на один ресурс (лифт, вход, коридор,. . .
25 модель здравосохранения и функциональных требований к пищеблоку: конфликты функциональных требований.
anaschu 22.06.2026
Есть ли данные о том, какие функциональные/ эксплуатационные требования или их сочетания труднее всего учитывать при проектировании зданий? Да, такие данные есть, и они хорошо описаны и в российской,. . .
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу: https:/ / github. com/ altbodhi/ ReConMan По итогу пришел к мысли, что DU не дружат с существующими технологиями. От сериализации до отображения в реляционную. . .
Администрация Хабра удаляет новые энрегоэфективные алгоритмы, которые не западной школы кода, и вовсе никак не сгенерировавны.
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2. Задача: контроль уникальности строк в. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru