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();
}
|
) конечно точно так делать не стоит, но смысл я думаю понятен.
Короче говоря, проверяй то, что нужно, до создания формы
Отредактировано Nimble — 04/11/2003, 12:19 |
|
Samual |
Отправлено: 06.11.2003, 21:46 |
|
Дежурный стрелочник
Группа: Участник
Сообщений: 39
|
Посмотри в Exampl(лах) CBuilder(a), в папке DB, пример MastApp.
Там есть Splash-окно, форма пароля делается таким же образом.
Там Nimble предложил хороший вариант, но чтобы перед созданием главной формы показать окно ввода пароля, то надо форму создавать динамически. Как? Всё в MastApp. |
|
|