powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / задержать событие OnActivate
25 сообщений из 44, страница 1 из 2
задержать событие OnActivate
    #39672708
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. есть событие OnActivate для основной формы
перед OnActivate в OnCreate запускается проверка с временем от 1 до 20 сек

Вопрос: есть ли простой способ задержать OnActivate до получения результатов проверки?
таймер на другой форме не предлагать
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672712
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

есть -- не вызывать в своем коде Application.ProcessMessages (которая и начинает обрабатывать дальше события формы).
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672714
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сакральный вопрос: нахрена?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672736
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
не вызывать в своем коде Application.ProcessMessages (которая и начинает обрабатывать дальше события формы).


не вызывать? так ничего и не вызываеся, события сами идут друг за дружкой при запуске приложения. вначале криеейт потом шоу потом активейт, все как в букваре
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672739
Barlone
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairне вызывать в своем коде Application.ProcessMessages (которая и начинает обрабатывать дальше события формы).


не вызывать? так ничего и не вызываеся, события сами идут друг за дружкой при запуске приложения. вначале криеейт потом шоу потом активейт, все как в буквареТак если не вызывается, то как оно попадет в OnActivate до возврата из OnCreate?
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672742
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Мимопроходящийсакральный вопрос: нахрена?
ТС хочет сплэш замутить
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672751
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BarlonePcrepairпропущено...


не вызывать? так ничего и не вызываеся, события сами идут друг за дружкой при запуске приложения. вначале криеейт потом шоу потом активейт, все как в буквареТак если не вызывается, то как оно попадет в OnActivate до возврата из OnCreate?
Попадет, если в OnCreate вызывается ProcessMessages или любой другой асинхронный код, например, используются интернет-компоненты для запроса к сайту на проверку новой версии.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672755
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
JaDiинтернет-компонентыДа, они виноваты всегда. И вообще интернет.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672756
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так Я не понял, есть простой способ(встроенный в основную форму) или нет?
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672758
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
Pcrepairтак Я не понял, есть простой способ(встроенный в основную форму) или нет?
архитектурное решение на помойку
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672760
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairтак Я не понял, есть простой способ(встроенный в основную форму) или нет?
На дочерней форме в OnActivate слать свое кастомное сообщение PostMessage на главную форму. На главной же форме это сообщение ловить и реагировать (либо сразу, либо менять флаг, который будет ждать тот же код на OnCreate или где там надо). Вообще, лучше более детально описать задачу, как она сделана сейчас и что не получается.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672761
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день. есть событие OnActivate для формы при запуске приложения
перед OnActivate, в OnCreate, вызывается функция(асинхронная) проверки чего то с временем от 1 до 20 сек

Вопрос: есть ли простой способ(какие то методы формы) задержать OnActivate до получения результатов проверки?
таймер на другой форме не предлагать
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672763
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

Код: pascal
1.
Application.ShowMainForm := False;


и не показывать её до завершения этого события.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672764
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Например вызвать асинхронную функцию синхронно.

А вообще эту проверку надо делать до вызова конструктора формы и результат уже передать туда.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672765
Фотография JayDi
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

это НЕ таймер...

1. На форме делается флаг IsFormCreated...
2. На OnCreate он выставляется в False, запускается долгая асинхронная операция, после которой флаг выставляется в True;
3. На OnActivate ставится код с бесконечным циклом while true, который ожидает готовность формы по флагу (см выше), а если не готова, то небольшой sleep и вызов Application.ProcessMessages;

Всё.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672772
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairесть событие OnActivate для формы при запуске приложения

Запомните, дети: никогда, ни при каких условиях не используйте OnActivate для разовых
действий.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672777
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То же самое с таймером
1. В OnActivate запускается таймер
2. В OnTimer останавливается, проверяется некий флаг готовности
3а. Если ещё флаг не готов - таймер запускается снова
3б. Если флаг готов, таймер не запускается, а выполняются действия дальше
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672778
SoulStream
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovЗапомните, дети: никогда, ни при каких условиях не используйте OnActivate для разовых действий.
Совершенно согласен, но...
Мне показалось что здесь не этот случай. Разовое действие у него как раз в OnCreate, он просто хочет синхронную проверку, а доступна только асинхронная.
Вам надо делать из асинхронной синхронную. Всё иное - костыли от лукавого.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672781
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЗапомните, дети: никогда, ни при каких условиях не используйте OnActivate для разовых действий.
Код: pascal
1.
2.
3.
4.
procedure TForm1.FormActivate(Sender: TObject);
begin
  TForm(Sender).OnActivate := nil;
end;
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672784
SoulStream
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да, это вполне сработает. Но выглядит как костыль. С:
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672787
AX-Class
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,
А что надо сделать на языке юзера?
Приложение стартует. Главную форму нельзя показывать до проверки? Или надо показать неактивной? А мышкой активировать можно во время проверки?
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672790
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AX-ClassPcrepair,
А что надо сделать на языке юзера?
Приложение стартует. Главную форму нельзя показывать до проверки? Или надо показать неактивной? А мышкой активировать можно во время проверки?

можно, все можно и мышку и форму

сделал так :
- oncreate : вызов потока в котором асинхронный процесс, запуск таймера который ждет ДА из процесса
- таймер : когда ДА -> запуск процедуры(бывшего onactivate, хотя... можно присвоить не formactivate а что то ненужное а в таймере написать tmain.formactivate(self); и вызвать но это немного криво)

все работает.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672806
AX-Class
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair,

Вы откроете для себя большие возможности, если будете программировать не заполнением ивентов компонентов, а функциями.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672818
под ван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AX-ClassPcrepair,

Вы откроете для себя большие возможности, если будете программировать не заполнением ивентов компонентов, а функциями.
Будь так добр - покажи на данном конкретном примере, что значит " программировать не заполнением ивентов компонентов, а функциями ", а то даже я не понял, о чём ты.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672828
AX-Class
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
под ван,

Не хочу.
Что тут показывать? Код зависит о флага. Флаг меняется асинхронно. А ТС какие-то ивенты мучил, пока не дошло.
...
Рейтинг: 0 / 0
25 сообщений из 44, страница 1 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / задержать событие OnActivate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]