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

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

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


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


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


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

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

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


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

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

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

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

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

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

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

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

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

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

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

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


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