Отображение формы при запуске
Билдерь 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();
Форма отображается при запуске, потом закрывается и...тишина. приложение не запускается, и в процессах его не видно после этого. Ни сообщения об исключительной ситуации, никаких посмертных напутсвий, ничего.
Если убрать эту ботву то все возвращается в обычное состояние.
Подскажите, что я делаю не так?
Цитата:
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();
Форма отображается при запуске, потом закрывается и...тишина. приложение не запускается, и в процессах его не видно после этого. Ни сообщения об исключительной ситуации, никаких посмертных напутсвий, ничего.
Если убрать эту ботву то все возвращается в обычное состояние.
Подскажите, что я делаю не так?
Приветствую.
Билдерь 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.
Я собсно пробовал делать
StratUp->Close(); перед тем как вопрошать народ - эфект тот же самы что и при delete... :(
Форма mf указана как mainform в опциях проекта...
Я так же пробовал отображать ее после закрытия StratUp путем mf->Open();
она на секунду отображается и потом старый сценарий - приложения нет :)
Я собсно пробовал делать
StratUp->Close(); перед тем как вопрошать народ - эфект тот же самы что и при delete... :(
Форма mf указана как mainform в опциях проекта...
Я так же пробовал отображать ее после закрытия StratUp путем mf->Open();
она на секунду отображается и потом старый сценарий - приложения нет :)
Чтобы сделать заставку при запуске, мне кажется, нужно создать форму с помощью оператора new, показать с помощью Show() а затем, после создания главной формы приложения с помощью Application->CreateForm, уничтожить заставку оператором delete.
Цитата:
Originally posted by fellow
Форма, созданная с помощью Application->CreateForm самой первой становится главной формой приложения. Таким образом, форма StartUp создаётся как главная и тут же уничтожается. Приложение недоумевает и отказывается работать :)
Чтобы сделать заставку при запуске, мне кажется, нужно создать форму с помощью оператора new, показать с помощью Show() а затем, после создания главной формы приложения с помощью Application->CreateForm, уничтожить заставку оператором delete.
Форма, созданная с помощью Application->CreateForm самой первой становится главной формой приложения. Таким образом, форма StartUp создаётся как главная и тут же уничтожается. Приложение недоумевает и отказывается работать :)
Чтобы сделать заставку при запуске, мне кажется, нужно создать форму с помощью оператора new, показать с помощью Show() а затем, после создания главной формы приложения с помощью Application->CreateForm, уничтожить заставку оператором delete.
100% верно. И добавить вообщем-то нечего разве только почаще заглядываить в папку $(BCB)\Examples,
в данном конкретном случае сюда $(bcb)\examples\dbtask\mastapp\mastapp.cpp
в данном конкретном случае сюда $(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;
}