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

Ваш аккаунт

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

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

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

Отображение формы при запуске

6.8K
10 февраля 2005 года
L0phtStar
20 / / 25.12.2004
Приветствую.

Билдерь 6.0

Хочу отображать форму при запуске приложения (с логотипом и проч)

Слудуя рекомендациям справочной системы делаю в try – блоке исходного файла проекта такое:

Application->Initialize();
Application->CreateForm(__classid(TStartUp), &StartUp);
StartUp->logo->Picture->LoadFromFile("logo.bmp");
StartUp->Show();
StartUp->Update();

Application->CreateForm(__classid(Tmf), &mf);
Application->CreateForm(__classid(Tdb), &db);

delete StartUp;
Application->Run();

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

Если убрать эту ботву то все возвращается в обычное состояние.

Подскажите, что я делаю не так?
259
10 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by L0phtStar
Приветствую.

Билдерь 6.0

Хочу отображать форму при запуске приложения (с логотипом и проч)

Слудуя рекомендациям справочной системы делаю в try – блоке исходного файла проекта такое:

Application->Initialize();
Application->CreateForm(__classid(TStartUp), &StartUp);
StartUp->logo->Picture->LoadFromFile("logo.bmp");
StartUp->Show();
StartUp->Update();

Application->CreateForm(__classid(Tmf), &mf);
Application->CreateForm(__classid(Tdb), &db);

delete StartUp;
Application->Run();

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

Если убрать эту ботву то все возвращается в обычное состояние.

Подскажите, что я делаю не так?


Попробуй вместо delete StartUp; сделать StratUp->Close(); И посмотри в опциях проекта. У тебя mainform должна быть mf.

6.8K
10 февраля 2005 года
L0phtStar
20 / / 25.12.2004
Попробуй вместо delete StartUp; сделать StratUp->Close(); И посмотри в опциях проекта. У тебя mainform должна быть mf. [/QUOTE]

Я собсно пробовал делать

StratUp->Close(); перед тем как вопрошать народ - эфект тот же самы что и при delete... :(

Форма mf указана как mainform в опциях проекта...

Я так же пробовал отображать ее после закрытия StratUp путем mf->Open();
она на секунду отображается и потом старый сценарий - приложения нет :)
6.8K
10 февраля 2005 года
L0phtStar
20 / / 25.12.2004
Попробуй вместо delete StartUp; сделать StratUp->Close(); И посмотри в опциях проекта. У тебя mainform должна быть mf. [/QUOTE]

Я собсно пробовал делать

StratUp->Close(); перед тем как вопрошать народ - эфект тот же самы что и при delete... :(

Форма mf указана как mainform в опциях проекта...

Я так же пробовал отображать ее после закрытия StratUp путем mf->Open();
она на секунду отображается и потом старый сценарий - приложения нет :)
310
11 февраля 2005 года
fellow
853 / / 17.03.2003
Форма, созданная с помощью Application->CreateForm самой первой становится главной формой приложения. Таким образом, форма StartUp создаётся как главная и тут же уничтожается. Приложение недоумевает и отказывается работать :)

Чтобы сделать заставку при запуске, мне кажется, нужно создать форму с помощью оператора new, показать с помощью Show() а затем, после создания главной формы приложения с помощью Application->CreateForm, уничтожить заставку оператором delete.
246
11 февраля 2005 года
GIZMO
1.8K / / 30.07.2004
Цитата:
Originally posted by fellow
Форма, созданная с помощью Application->CreateForm самой первой становится главной формой приложения. Таким образом, форма StartUp создаётся как главная и тут же уничтожается. Приложение недоумевает и отказывается работать :)

Чтобы сделать заставку при запуске, мне кажется, нужно создать форму с помощью оператора new, показать с помощью Show() а затем, после создания главной формы приложения с помощью Application->CreateForm, уничтожить заставку оператором delete.


100% верно. И добавить вообщем-то нечего разве только почаще заглядываить в папку $(BCB)\Examples,
в данном конкретном случае сюда $(bcb)\examples\dbtask\mastapp\mastapp.cpp

6.8K
11 февраля 2005 года
L0phtStar
20 / / 25.12.2004
почаще заглядываить в папку $(BCB)\Examples,
в данном конкретном случае сюда $(bcb)\examples\dbtask\mastapp\mastapp.cpp

---
Сасибо за ссылочку на файл, GIZMO оказывается они учат одному а делают все по-другому :)

вот полная выдержка из хелпа по отображению формы при запуске: (для народа, чтобы не пользовались :)

This example shows progress of loading forms as an application starts up. The code example is placed in the project source (*.dpr) file. To see project source, select the View | Project Source menu item.
You will need to set up your project with the following steps before using the code example:

Add four additional forms to a default project.
Place a TProgressBar on Form5
Take the Project | Options | Forms menu option and place Form5 on the available forms list.
Change the code of your project (*.dpr) file to look like the example.

#include <vcl\vcl.h>

#include "Unit5.h"
#pragma hdrstop
//---------------------------------------------------------------------------
USEFORM("Unit1.cpp", Form1);
USERES("Project1.res");
USEFORM("Unit2.cpp", Form2);
USEFORM("Unit3.cpp", Form3);
USEFORM("Unit4.cpp", Form4);
USEFORM("Unit5.cpp", Form5);
//---------------------------------------------------------------------------
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
{
Application->Initialize();

Application->CreateForm(__classid(TForm5), &Form5);
Form5->ProgressBar1->Max = 100;
Form5->Show(); // show a splash screen contain ProgressBar control
Form5->Update(); // force display of Form5
Application->CreateForm(__classid(TForm1), &Form1);
Form5->ProgressBar1->StepBy(25);
Application->CreateForm(__classid(TForm2), &Form2);
Form5->ProgressBar1->StepBy(25);
Application->CreateForm(__classid(TForm3), &Form3);

Form5->ProgressBar1->StepBy(25);
Application->CreateForm(__classid(TForm4), &Form4);
Form5->ProgressBar1->StepBy(25);
delete Form5;
Application->Run();
}
catch (Exception &exception)
{
Application->ShowException(&exception);
}
return 0;
}
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог