Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/23: Рейтинг темы: голосов - 23, средняя оценка - 4.83
2 / 2 / 0
Регистрация: 16.10.2009
Сообщений: 65

Ожидание

04.04.2011, 21:54. Показов 4888. Ответов 14
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здраствуйте.

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

И если не сложно, напишите с помощью каких компонентов мона сделать и код. Заранее благодарен
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.04.2011, 21:54
Ответы с готовыми решениями:

Ожидание команды с клавиатуры
Есть форма, созданная в С++ Builder. Нужно что бы пока она была активна, то ожидала ввода комбинации клавишь на клавиатуре. Например:...

Ожидание завершение процесса
Добрый вечер. Разрабатываю мульти-инсталятор для одной программы. С установкой я разобрался, застрял на обновлении... Когда...

Ожидание завершения процесса
Привет, есть путь к файлу, есть файл, после запуска файл выполняет действия и закрывается. Задача: Отследить состояние файла по пути,...

14
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
04.04.2011, 22:51
Посложнее:
Этот документ повествует о методе создания Сплэш Окна (окна, появляющегося при старте программы). Наше намерение — обеспечить Вас информацией по созданию приложений с Профессиональными задатками. Мы покажем два метода. Первый основан на ответе от сотрудника Borland по имени Jeffс. Второй — улучшенная версия нашего собственного кода, обеспечивающего показ окон при старте и выходе из программы такого же стиля, как у ShareWare программ.Мы предполагаем, что у Вас есть C++ Builder, работающий на Windows95 или выше. (Сам принцип подойдет и для Delphi, и для WinowsNT).

Для этого документа нет сопроводительного кода, просто следуйте инструкциям, и Вы сделаете Ваш собственный.
(Примечание:: Комментарии, данные в таком цвете, важны для понимания работы BCB.)
Основные принципы.
C++ Builder создает приложения из форм. Эти формы (окна) ведут себя таким образом, который может показаться сперва запутанным. Для начала поймите, что начальная форма (по умолчанию называемая Form1) НЕ ЯВЛЯЕТСЯ главной.

Главная форма приложения, на самом деле, невидима и, на данном этапе, недоступна. Мы покажем это в туториале, когда минимизируем Form1 из кода, и она свернется на рабочий стол, а не уйдет в панель задач.
(Примечание: Если Вы минимизируете выполняющееся приложение, Вы минимизируете его на панель задач, так как Вы минимизируете невидимое главное окно приложения. Если Вы минимизируете форму посредством кода, т.е. Form2->WindowState = wsMinimized, она свернется на рабочий стол, который находится внутри невидимого главного окна приложения.)
Метод Первый :: Настоящее Сплэш Окно (Splash Screen)
Шаг Первый : Создание Приложения
Создайте новое приложение, используя File|New Application.
Выберете File|Save Project As… и сохраните Ваш проект куда–нибудь (например, C:\my projects\splash example one), причем:
Сохраните unit1.cpp под именем MainFormSource.cpp, (автоматически произойдет переименование заголовочных файлов (*.h) и т.д.)
Сохраните project.cpp под именем SplashExample.cpp.
Переименуйте форму с Form1 на MainForm
(В Инспекторе объектов из выпадающего списка выберите Form1::TForm, перейдите на свойство Name и измените его на «MainForm».)
(Вы заметите, что в Инспекторе Объектов изменит выпадающий список (вместо Form1::TForm появится MainForm:TMainForm). Не беспокойтесь сделано специально и мы извлечем из этого пользу позже. Вы также заметите, что сама форма изменила свой заголовок на MainForm.)
Выберите File|Save.
Шаг второй :Создаем Сплэш окно
Создайте новую форму через File|New Form
Переименуйте эту форму на Splash таким же образом, как мы переименовывали MainForm.
Опять заметьте, что Инспектор Объектов изменил надпись в выпадающем списке с Form2:TForm на Splash:TSpalsh.
Сохраните проект через File|Save, причем:
Когда будет запрос на сохранение модуля Unit1.cpp, назовите его SplashSource.cpp
Сейчас мы создадим Сплэш окно.
В Инспекторе Объектов выберите +BorderIcons. Нажмите на «+».
Вы увидите 4 свойства, присвойте всем им значение false, значение свойства +BorderIcons будет выглядеть так: [].
Измените BorderStyle = bsNone
Измените FormStyle = fsStayOnTop
Измените Position = poScreenCenter
Поместите на форму Panel (Panel1). Установите ее свойства как показано:
C++
1
2
3
4
Align = alClient
BevelInner = bvLowered
BevelOuter = bvLowered
Bevelwidth = 2
Поместите TImage на панель (TImage1), установите ее свойства как показано:
C++
1
2
Align = alClient
Stretch = true
BMP картинку (не важно какую)
(Для этого два раза кликните по Image1 на панели)
Шаг Третий :Показываем Сплэш окно
Минимизируйте формы, чтобы Вам было проще работать с Редактором Кода.
Два раза кликните по обработчику события OnShow формы MainForm на закладке Events (События) Инспектора Объектов.
Напишите следующий код:
C++
1
2
3
4
5
6
if(Splash)
    { // Проверка на существование указателя
     delete Splash; // Удаляем Сплэш окно
     Splash = NULL ; // Устанавливаем указатель в NULL,
//т.к. нам он больше не понадобится
    }
Редактируем исходный код проекта.
Выберите Project|View Project Source, и в Редакторе Кода Вы увидите следующее (то что черным цветом)
Добавьте код красного цвета (или просто сравните и добавьте отсутствующие строки).
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
try
    {
     Application->Initialize();
     Splash = new TSplash(static_cast<void *>(NULL)); // нет владельца
     Splash->Show();
     Application->ProcessMessages(); // это необходимо для того, чтобы показать
//Сплэш окно
     Application->CreateForm(__classid(TMainForm), &MainForm);
     //
     // Нам не нужно авто создание формы
     // Application->CreateForm(__classid(TSplash),&Splash);
     Application->Run();
    }
catch (Exception &exception)
    {
     Application->ShowException(&exception);
    }
return 0;
}
Добавьте заголовочный файл «SplashSource.h» к SplashExample.cpp и MainFormSource.cpp
Для этого напишите #include "SplashSource.h" перед функцией WinMain() в SplashExample.cpp.
Теперь перейдите к форме MainForm и выберите File|Include Unit Hdr… в результате чего добавится строчка #include "SplashSource.h" к MainFormSource.cpp.
Шаг Четвертый :Запускайте Приложение
«Ей-богу, это было быстро. Сплэш окно мелькнуло и исчезло !!!»
Правильно, приложение ничего не делает, поэтому требуется не много времени для того, чтобы создать и показать форму MainForm.
Добавляем задержку по времени. (Это не обязательно, по мере роста Вашего приложения, потребуется и так много времени на инициализацию, поэтому Вам не потребуется дополнительная задержка во времени.)
обработчике события OnCreate формы MainForm добавьте следующее:
C++
1
2
3
4
if(Splash)
    {
     Sleep(5000);
    }
Попрощее
C++
1
2
3
4
5
6
7
8
9
10
11
12
// На создание frmMain
void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
 frmSplash = new TfrmSplash(this);
 frmSplash->ShowModal();
 frmSplash->Free();
}
// На событие Таймера на форме  frmSplash
void __fastcall TfrmSplash::Timer1Timer(TObject *Sender)
{
Close();
}
Код не мой. Не проверял.
2
2 / 2 / 0
Регистрация: 16.10.2009
Сообщений: 65
04.04.2011, 23:32  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
Посложнее:Попрощее
C++
1
2
3
4
5
6
7
8
9
10
11
12
// На создание frmMain
void __fastcall TfrmMain::FormCreate(TObject *Sender)
{
 frmSplash = new TfrmSplash(this);
 frmSplash->ShowModal();
 frmSplash->Free();
}
// На событие Таймера на форме  frmSplash
void __fastcall TfrmSplash::Timer1Timer(TObject *Sender)
{
Close();
}
Код не мой. Не проверял.



А можно вот это все сделать, кинуть в архив и скинуть сюда?)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.04.2011, 00:15
Цитата Сообщение от goonia91 Посмотреть сообщение
А можно вот это все сделать, кинуть в архив и скинуть сюда?)
- а пивка-с не желаете ?
2
2 / 2 / 0
Регистрация: 16.10.2009
Сообщений: 65
05.04.2011, 00:25  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
- а пивка-с не желаете ?


не плохо бы)))

да шучу)

вот еще такой вопрос...почему когда я, кинул на форму таймер и прогрессбар, в таймере прописал код, который вы мне давали:
ProgressBar1->Max = 100;
for (int i=0;i<100;i++){
Sleep(100);
ProgressBar1->Position++;

я еще дописал вот такой кусок, по нажатию кнопки открывается 2-я форма,но когда прогрессбар доход до конца, он очень долго думает и только через секунд 10 можно нажать на кнопку, и через секунд 7 открывает 2 форму.

Что сделать, чтоб он так долго не думал?)


Заранее благодарен)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.04.2011, 00:39
Запускаете, ждете 5 сек.
Среда (ИДЕ) - RAD XE.

С чего бы это я сегодня такой добрый ?
Вложения
Тип файла: rar Splash.rar (433.2 Кб, 76 просмотров)
2
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.04.2011, 00:41
он у вас спит 100 раз по 100мсек = 10000 т.е., 10 секунд.
1
2 / 2 / 0
Регистрация: 16.10.2009
Сообщений: 65
05.04.2011, 00:44  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
Запускаете, ждете 5 сек.
Среда (ИДЕ) - RAD XE.

С чего бы это я сегодня такой добрый ?


немного не понял, что мне делать с этими файлами?)

БОЛЬШОЕ СПАСИБО ВАМ ЗА ВСЕ)))
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.04.2011, 00:56
1. Создаете проект.
1.а. Называете форму frmMain
2. Добавляете в проект форму.
2.а. Называете форму frmSplash
3. Добавляете в Unit1.cpp #include "Unit2.cpp".
4. Добавляете на frmSplash Timer1, которому задаете интервал - у меня - 5000 (5 сек).
5. Создаете в Инспекторе объектов обработчики для каждой формы frmMain и таймера на Timer1 на frmSplash, как в моем примере.
6. Добросовестно копируете код (что в соответствуюших обработчиках) из примера.
7. Запускаете , наслаждаетесь.
8. Пишете сюда сердитое письмо с претензиями.
1
2 / 2 / 0
Регистрация: 16.10.2009
Сообщений: 65
05.04.2011, 01:03  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
1. Создаете проект.
1.а. Называете форму frmMain
2. Добавляете в проект форму.
2.а. Называете форму frmSplash
3. Добавляете в Unit1.cpp #include "Unit2.cpp".
4. Добавляете на frmSplash Timer1, которому задаете интервал - у меня - 5000 (5 сек).
5. Создаете в Инспекторе объектов обработчики для каждой формы frmMain и таймера на Timer1 на frmSplash, как в моем примере.
6. Добросовестно копируете код (что в соответствуюших обработчиках) из примера.
7. Запускаете , наслаждаетесь.
8. Пишете сюда сердитое письмо с претензиями.

Прост у мя курсовой, вот. В том году было по Делфи, там была БД, а сейчас про достопримечательности. И вот не знаю как начать, т.е. когда было БД первой формой у мя было типа авторизации, а тут не надо, прост надо как приветствие. Мот есть какая-нить альтернатива или задумка?
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.04.2011, 01:12
влепите на сплеш форму авторизацию - User, Password - при правильном вводе показывайте главную форму - гламурненько получится .
Ой, у вас было в той работе .
Ну, покажите на сплешформе мультик-авишку ) , получится еще более гламурненько .
1
2 / 2 / 0
Регистрация: 16.10.2009
Сообщений: 65
05.04.2011, 01:16  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
влепите на сплеш форму авторизацию - User, Password - при правильном вводе показывайте главную форму - гламурненько получится .
Ой, у вас было в той работе .
Ну, покажите на сплешформе мультик-авишку ) , получится еще более гламурненько .


спасибо вам большое, но не могли бы вы создать что-нить с этой сплеш формой, чтоб появился exe файл, а то я не понимаю как он работает)
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.04.2011, 01:24
Цитата Сообщение от goonia91 Посмотреть сообщение
но не могли бы вы создать что-нить с этой сплеш формой, чтоб появился exe файл, а то я не понимаю как он работает)
так я проектик вроди прицепил, зайдите в папку Splash\Release\Win32 , запустите Project1.exe - сначала будет сплеш, потом ЕХЕ главной формы, или я тоже чего-нибудь не понимаю ?
1
2 / 2 / 0
Регистрация: 16.10.2009
Сообщений: 65
05.04.2011, 01:26  [ТС]
Цитата Сообщение от LK Посмотреть сообщение
так я проектик вроди прицепил, зайдите в папку Splash\Release\Win32 , запустите Project1.exe - сначала будет сплеш, потом ЕХЕ главной формы, или я тоже чего-нибудь не понимаю ?
спасибо еще раз вам, я что-то сегодня туплю и совсем разленился, завтра со всем раберусь)

спасибо)
1
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
05.04.2011, 01:29
Цитата Сообщение от goonia91 Посмотреть сообщение
совсем разленился
- ну, это вы очень своевременно лишили меня определенного удовольствия .
Удачи .
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.04.2011, 01:29
Помогаю со студенческими работами здесь

Ожидание закрытия программы
Реализовал ожидание закрытия программы таким образом: void __fastcall TfMain::FormCreate(TObject *Sender) { hMutex = CreateMutex...

Ожидание завершения процесса
Как дождаться завершения процесса и выполнить команду ?

Ожидание завершения процесса
Как дождаться завершения процесса и выполнить команду ?

Ожидание завершения потока
Доброго вечера. Подскажите...то я что то сам не разобрался... Как подождать завершения потока... // if (поток завершен) { ...

Ожидание нажатие кнопки
Здравствуйте, помогите решить такую задачу. Есть кнопка один, в ней есть нужное мне действие, которое должно выполнятся до определенной...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Киев стоит - украинская песня
zorxor 28.01.2026
wfWdiRqdTxc О Господи, Вечный, Ты . . . Я помоги, Бесконечный. . . Я прошу Ты. . . Я погибаю, спаси. . . Я прошу Тебя Вечный. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru