powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / задержать событие OnActivate
44 сообщений из 44, показаны все 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
задержать событие OnActivate
    #39672857
под ван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AX-Classпод ван,

Не хочу.
Что тут показывать? Код зависит о флага. Флаг меняется асинхронно. А ТС какие-то ивенты мучил, пока не дошло.
Ладно не заводись, не умеешь так не умеешь - я тоже не умею, поэтому и спросил.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39672964
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepair- oncreate : вызов потока в котором асинхронный процесс, запуск таймера который ждет ДА из процесса
- таймер : когда ДА -> запуск процедуры(бывшего onactivate, хотя... можно присвоить не formactivate а что то ненужное а в таймере написать tmain.formactivate(self); и вызвать но это немного криво)Если нужно ждать завершения потока, то зачем здесь поток? Если ждать не нужно, а нужно получить уведомление о завершении потока, то зачем здесь таймер?
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673016
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_Pcrepair- oncreate : вызов потока в котором асинхронный процесс, запуск таймера который ждет ДА из процесса
- таймер : когда ДА -> запуск процедуры(бывшего onactivate, хотя... можно присвоить не formactivate а что то ненужное а в таймере написать tmain.formactivate(self); и вызвать но это немного криво)Если нужно ждать завершения потока, то зачем здесь поток? Если ждать не нужно, а нужно получить уведомление о завершении потока, то зачем здесь таймер?Уже спрашивали, ответа не было.
И уже советовали просто выполнить этот "процесс" перед созданием формы (или в OnCreate) без бессмысленных потоков и таймеров.
Но так не интересно.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673231
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
YuRock_Vasilisk_пропущено...
Если нужно ждать завершения потока, то зачем здесь поток? Если ждать не нужно, а нужно получить уведомление о завершении потока, то зачем здесь таймер?Уже спрашивали, ответа не было.
И уже советовали просто выполнить этот "процесс" перед созданием формы (или в OnCreate) без бессмысленных потоков и таймеров.
Но так не интересно.

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

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

Это потому что, что на дебильные вопросы на публичном форуме лучше не отвечать:
гуглопрограммисты растащат ответ по своим говноподелиям, а потом престиж профессии падает
и Греф борется. А так способ, конечно, есть, но ни один вменяемый человек его применять не
будет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673238
Фотография wadman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairа ответа так и нет
Потому что это не описание задачи, а описание (не исключено, что кривого) решения и попытка его обрести.

Зачем?
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673246
под ван
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dimitry SibiryakovPcrepairа ответа так и нет

Это потому что, что на дебильные вопросы на публичном форуме лучше не отвечать:
гуглопрограммисты растащат ответ по своим говноподелиям, а потом престиж профессии падает
и Греф борется. А так способ, конечно, есть, но ни один вменяемый человек его применять не
будет.

Димон, ну будь проще, и на эти вещи посмотри тоже проще. Тем более исходники самой среды последних версий уже все видели - сам же знаешь, хуже всё равно уже некуда, так что к чему эта ложная скромность и такой демонстративный отказ от костылей? :)

Delphi мёртв - весь мир об этом знает, поэтому самое время изгаляться в конструировании всяких извращений. Причём чем изощрённее - тем круче. Чтобы все видели, что этот труп ещё ого-го! Не время скромничать.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673253
b0rk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PcrepairДобрый день. есть событие OnActivate для основной формы
перед OnActivate в OnCreate запускается проверка с временем от 1 до 20 сек

Вопрос: есть ли простой способ задержать OnActivate до получения результатов проверки?
таймер на другой форме не предлагать
вызывать проверку из OnActivate вместо OnCreate - такой вариант устроит?
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673266
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Pcrepairесть ли простой способ задержать OnActivate до получения результатов проверки?Я вам открою секрет - все задерживается само
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
procedure Check;
begin
  Sleep(30000);
  ShowMessage('Проверка завершена. Результат положительный');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ShowMessage('Ахтунг!. Сейчас будет проверка!!!');
  Check;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  ShowMessage('Activate!!!!');
end;
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673285
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
12.07.2018 17:10, _Vasilisk_ пишет:
> Я вам открою секрет

ты сломал стройную картину мирозданья
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673434
зонд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Vasilisk_все задерживается самоНе, он же ясно написал - его "Check" асинхронный (какая-нибудь чужая/библиотечная функция).

Pcrepairа ответа так и нетКак нет? Два раза вам уже повторили:
X-Citeвызвать асинхронную функцию синхронноSoulStreamнадо делать из асинхронной синхроннуюЧто там за функция у вас и как именно становится понятно что она завершилась?
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673439
зонд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Pcrepairперед OnActivate в OnCreate запускается проверка с временем от 1 до 20 секНе "перед OnActivate", а просто "в OnCreate". Ещё не факт что после OnCreate вообще будет хоть один OnActivate.
Так же как не факт что OnActivate будет сразу после OnCreate - может и через час, и через сутки. А ещё вы в курсе что OnActivate может вызываться два раза, десять раз, тыщу раз?

И вообще - а нафига вам вообще проверки в OnCreate? Что за проверка-то?
Ну вот внутри OnCreate проверка вышла отрицательная - и чего теперь? Делайте проверку вообще до OnCreate.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673442
чччД__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ути-пути.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673527
b0rk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зондА ещё вы в курсе что OnActivate может вызываться два раза, десять раз, тыщу раз?
если вы не можете сделать так, чтобы проверка вызывалась только при первом вызове OnActivate, то может не стоит заниматься программированием?
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673588
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а исчо, OnActivate может вызываться у формы которая ещё даже НЕ ОТРИСОВАЛАСЬ...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673659
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зондНе, он же ясно написал - его "Check" асинхронный (какая-нибудь чужая/библиотечная функция).Он ясно написалPcrepairсделал так :
- oncreate : вызов потока в котором асинхронный процесс,Т.е. поток стартует он сам. Вот все и интересуются - нафига? ТС молчит
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673669
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
b0rkесли вы не можете сделать так, чтобы проверка вызывалась только при первом вызове
OnActivate, то может не стоит заниматься программированием?

Программированием точно не стоит заниматься человеку, не умеющему выбрать правильную точку
для действия и пихающему код куда попало, включая OnActivate. Даже если он успешно борется
с разложенными собой же граблями.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673700
зонд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
b0rkесли вы не можете сделать так, чтобы проверка вызывалась только при первомНе очень ясно, это вы ТС или мне?
Вариант "как сделать" банален и его уже даже показывали, только это совсем костыль. Может одноразовую проверку вообще в OnMouseMove запихнём, а потом будем героически решать проблему "чтоб делалось только при первом"?
Для вызова одноразовой проверки надо использовать адекватное событие. Есть сильное подозрение что ТС делает проверку не в том месте где ей место.

_Vasilisk_Он ясно написалА вот я не увидел намёка на какой-либо именно "свой поток". Мне кажется он просто так в терминах путается.
Вангую что у него вызов чужого кода. Что-то типа PostMessage() или PlaySound(SND_ASYNC), и он просто без понятия как оно внутри устроено.
...
Рейтинг: 0 / 0
задержать событие OnActivate
    #39673912
Pcrepair
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
да все уже давно сделано и работает как предназначено. вопрос чиста тиоритцский. может все в форме уже предусмотрено а Я просто не знаю. такое довольно часто бывает.
...
Рейтинг: 0 / 0
44 сообщений из 44, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / задержать событие OnActivate
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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