C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Закрытие формы ...
creater
Отправлено: 04.11.2003, 10:53


Станционный диспетчер

Группа: Участник
Сообщений: 120



Ситуация следующая.
Необходимо перед показом главной формы отобразить форму в которой бы из Edit1 считывалось значение. Если введенное значение не соотвествует задуманному, то выдаем сообщение и закрываем форму- диалог, а затем и главную форму не дойдя до работы с ней.

Первую форму вызываю в OnCreate главной формы функцией ShowBox()
CODE

void __fastcall ShowBox()
{
 TIntroBox* b = new TIntroBox(Application);
 try{
   b->ShowModal();
 }
 catch(...){
   b->Free();
   throw;
 }
 b->Free();
}


Если введеное значение не верно делаю:
Close();
Application->Terminate();
После этого первая форма закрывается но, промигивает главная форма.

Как избавиться от промигивания?
Еще перед Close(); пишу Form1->Free(); но промигивание сохраняется :-(
Nimble
Отправлено: 04.11.2003, 11:16


Дежурный стрелочник

Группа: Участник
Сообщений: 34



Допустим проект называется Project1, а главна форма Form1, тогда в Project1.cpp замени строку
CODE

Application->CreateForm(__classid(TForm1), &Form1);


на
CODE

if (InputBox("Проверим доступ", "Пароль:", "")=="asdf")
{
Application->CreateForm(__classid(TForm1), &Form1);
Application->Run();
}


smile.gif) конечно точно так делать не стоит, но смысл я думаю понятен.

Короче говоря, проверяй то, что нужно, до создания формы smile.gif

Отредактировано Nimble — 04/11/2003, 12:19
Samual
Отправлено: 06.11.2003, 21:46


Дежурный стрелочник

Группа: Участник
Сообщений: 39



Посмотри в Exampl(лах) CBuilder(a), в папке DB, пример MastApp.
Там есть Splash-окно, форма пароля делается таким же образом.
Там Nimble предложил хороший вариант, но чтобы перед созданием главной формы показать окно ввода пароля, то надо форму создавать динамически. Как? Всё в MastApp.

Вернуться в Вопросы программирования в C++Builder