С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.53/19: Рейтинг темы: голосов - 19, средняя оценка - 4.53
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542

Как запустить функцию через какое-то время после открытия формы?

28.09.2012, 20:21. Показов 4152. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как запустить функцию через какое-то время после открытия формы?
Как сделать, что бы после открытия формы начали выполняться мои функции, на событие onCreate сначала запускаются функции, а потом открывается окно, мне надо наоборот, подскажите как это сделать, может у формы или у самой проги есть событие OnLoad какое-нибудь или что-нибудь похожее?
Что бы сначала открылась форма с полностью выполненной функцией onCreate в том числе и закрывающей скобкой, а затем начала выполняться моя функция.
И второй вопрос как определить размер экрана пользователя?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
28.09.2012, 20:21
Ответы с готовыми решениями:

Как запустить процедуру сразу после открытия формы,без нажатия кнопок?
Здрасте.Подскажите пожалуйста,как запустить процедуру сразу после открытия формы,без нажатия кнопок?Заранее спасибо.

Как задать время открытия, формы при нажатии кнопки?
Пример: нажал на кнопку "Открыть форму" прошло 3 секунды и форма открылась. Знаю что можно сделать как-то через макросы но...

Каков тормозной путь поезда? Через какое время после начала торможения он остановится?
Поезд движется прямолинейно со скоростью Vo= 180 км\ч. Внезапно на пути возникает препятствие, и машинист включает тормозной механизм. С...

10
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,888
Записей в блоге: 12
28.09.2012, 20:31
События формы происходят в следующем порядке:
OnCreate (или конструктор класса формы) -> OnShow -> OnActivate-> OnPaint -> OnResize -> OnPaint (при запуске приложения)
OnCloseQuery -> OnClose-> OnDeactivate -> OnHide -> OnDestroy (деструктор класса формы) (при закрытии приложения)

Так что, тебе (по твоему описанию) подойдет OnShow.
2
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
28.09.2012, 20:51  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int formhiryna;
int formvysota;
void sneg();
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Screen->Cursors[1] =  LoadCursorFromFile("Cursor.cur");
Form1->Image1->Cursor = (TCursor)1;
Form1->WindowState=wsMaximized;
Form1->BorderStyle=bsNone;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
formhiryna=Form1->Image1->Width;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
if(Key==27) Form1->Close();
}
//---------------------------------------------------------------------------
 
//---------------------------------------------------------------------------
void sneg()
{
formhiryna=Form1->Image1->Width;
}
 
void __fastcall TForm1::FormShow(TObject *Sender)
{
formhiryna=Form1->Image1->Width;
}
//---------------------------------------------------------------------------
в переменной formhiryna должна быть фактически ширина экрана, но туда сохраняется начальное значение размеров формы, а не после их изменения Form1->WindowState=wsMaximized;
Почему?
А если я добавляю кнопку и ею проверяю ширину, то все норм, правильное значение, а так выдает начальное значение ширины.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,888
Записей в блоге: 12
28.09.2012, 21:14
Я ж написал, что OnShow происходит перед OnResize. А при распахивании формы работает именно OnResize. Так что, при Show действительно получаешь размер еще не максимизированной формы.
1
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
28.09.2012, 22:48  [ТС]
А как определить все ли компоненты формы загружены? Мне надо сделать так, что бы после загрузке всего начала действовать моя функция.
0
Супер-модератор
Эксперт Pascal/DelphiАвтор FAQ
 Аватар для volvo
33197 / 21493 / 8233
Регистрация: 22.10.2011
Сообщений: 36,888
Записей в блоге: 12
28.09.2012, 23:13
На момент вызова OnCreate форма и все компоненты на ней уже созданы и инициализированы (если, конечно, в OnCreate ты не создаешь еще что-нибудь динамически). Так что уже в OnCreate или в любом более позднем событии можешь запускать свою функцию.
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
29.09.2012, 00:08
Цитата Сообщение от klynxe Посмотреть сообщение
И второй вопрос как определить размер экрана пользователя?
Screen->Width, Screen->Height, Screen->WorkAreaRect. Описания этих переменных можешь найти в справке: Vcl.Forms.TScreen Properties
0
12 / 12 / 4
Регистрация: 07.09.2012
Сообщений: 542
29.09.2012, 00:26  [ТС]
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
//---------------------------------------------------------------------------
 
#include <vcl.h>
#pragma hdrstop
 
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int formhiryna;
int formvysota;
void sneg();
void __fastcall TForm1::FormCreate(TObject *Sender)
{
Screen->Cursors[1] =  LoadCursorFromFile("Cursor.cur");
Form1->Image1->Cursor = (TCursor)1;
}
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
 
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyPress(TObject *Sender, char &Key)
{
if(Key==27) Form1->Close();
}
//---------------------------------------------------------------------------
 
//---------------------------------------------------------------------------
void sneg()
{
while(1){
Sleep(300);
formhiryna=Form1->Image1->Width;
}
}
 
void __fastcall TForm1::FormResize(TObject *Sender)
{
sneg();
}
//---------------------------------------------------------------------------
При таком вызове функции у меня результат только висящая форма без компонентов, в моем случае без рисунка. просто зависает прога. Цикл конечно бесконечный, но почему он во время слипа висит, а не просто раз в 0.3с выполняет функцию? И почему нету рисунка, который прописан в настройках формы?
0
 Аватар для BRcr
4043 / 2333 / 292
Регистрация: 03.02.2011
Сообщений: 5,066
Записей в блоге: 10
29.09.2012, 00:30
Цитата Сообщение от klynxe Посмотреть сообщение
почему он во время слипа висит, а не просто раз в 0.3с выполняет функцию?
Потому что именно так работает функция Sleep(). Используй таймер.
0
 Аватар для cpp_developer
20124 / 5691 / 417
Регистрация: 09.04.2010
Сообщений: 22,546
Записей в блоге: 1
29.09.2012, 08:50
klynxe, правила учат: одна тема - один вопрос.
0
5 / 5 / 2
Регистрация: 21.12.2015
Сообщений: 14
01.08.2016, 14:26
Стояла задача запускать загрузку данных в грид при запуске программы, когда прорисуются все контролы главной формы. Решил таким образом:

C++
1
2
3
4
5
6
7
8
9
10
void __fastcall TfmMain::FormPaint(TObject *Sender)
{
  static int iPaintCount = 1;
  if (iPaintCount < 4)
  {
    if (iPaintCount == 3)
      RefreshGrid();
    iPaintCount++;
  }
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.08.2016, 14:26
Помогаю со студенческими работами здесь

Через какое время после подачи на пластины напряжения 3 кВ пылинка достигнет одной из пластин
Между двумя вертикальными пластинами на равном расстоянии от них падает пылинка. Сила сопротивления движению пропорциональна скорости...

Через какое время после включения в катушке потечет ток, равный половине установившегося?
Здравствуйте! Условие задачи следующее: Катушка имеет индуктивность L = 0,144 Гн и сопротивление R = 10 Ом. Через какое время после...

Определить, через какое время после старта велосипедисты встретились и в какой точке пути
Из пункта А в пункт В выехал велосипедист со скоростью V0 км/час. Одновременно ему навстречу из пункта В двинулся «автостопом» другой...

Через какое время после закрытия броузера выполняется в global.asa function Session_OnEnd() { } ?
Через какое время после закрытия броузера выполняется в global.asa function Session_OnEnd() { }

Через какое примерно время после рождения нашей Вселенной в ней начали образовываться галактики
помогите пожалуйста ответить(


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru