code_27663.txt
Если после нажатия кнопки сразу прижать мышью заголовок и тащить - не закроется. Более того, кнопка после такого вообще работать больше не будет.
Этот топик читают: Гость
Ответов: 1926
Рейтинг: 172
|
|||
карма: 9 |
| ||
файлы: 1 | code_27663.txt [206B] [347] |
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
3042 писал(а): Если после нажатия кнопки сразу прижать мышью заголовок и тащить - не закроется. Более того, кнопка после такого вообще работать больше не будет.Нажал, перешел на заголовок, потаскал -- не закрылась, и не должна была -- на момент перетаскивания, очередь событий формы, включая таймер, блокируется. Так работает система. Вообще-то эффект довольно интересный -- очередь действительно перехватывается, намертво, и больше никакими коврижками не возвращается обратно. Очень странно, но искать причину надо в главной библиотеке KOL, там находится глобальный обработчик событий всех контролов |
|||
карма: 22 |
|
Ответов: 1926
Рейтинг: 172
|
|||
Но ведь после перетаскивания кнопка больше не работает. Разве это не ошибка?
|
|||
карма: 9 |
|
Ответов: 1731
Рейтинг: 68
|
|||
Хе хе , у меня странный эффект, после всех манипуляция кнопка не только не работала, но еще и реагировала на 2 секунды позже.
|
|||
карма: 1 |
|
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
Тут похоже на глобальную ошибку всей очереди контролов, при выполнении любого SendMessage, очередь ждет его исполнения, иногда с параметрами, а перехвааченная системой очередь не возвращает выход из посланного сообщения, и очередь контролов тупо виснет
|
|||
карма: 22 |
|
Ответов: 3889
Рейтинг: 362
|
|||
[offtop]Таймеры вообще штука ненадёжная. У меня одно фоновое (трей) приложение не может работать несколько дней к ряду из-за того, что через некоторое время пропадают события onTimer. Происходит это с обоими таймерами через один-два дня, но не происходит при использовании интервала в Thread (по понятным причинам). Всё руки не доходят зафиксировать момент, но не удивлюсь, если это будет что-нибудь вроде 00:00:00.[/offtop]
|
|||
карма: 1 |
|
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
3042 писал(а): Разве это не ошибка?Это нельзя так просто исправить, надо переписывать весь обработчик событий в KOL. Ты не возьмешься, случаем, а че, раз плюнуть ------------ Дoбавленo в 14.52: 1nd1g0 писал(а): Происходит это с обоими таймерами через один-два дня, но не происходит при использовании интервала в ThreadВ приведенном случае, не работает и сторонний поток впридачу, ничего толком не работает, что жми на кнопку, что не жми -- один хрен, мертвый перехват событий ------------ Дoбавленo в 15.03: Более подробно проверил схему -- блокировка возврата происходит после получения события с таймера на doClose, после этого и происходит впадание контролов в кому, ни одно событие после этого уже не отрабатывается |
|||
карма: 22 |
|
Ответов: 3889
Рейтинг: 362
|
|||
Хочешь сказать, частично закрывается обработка сообщений, хотя окно остаётся на экране? Окно продолжает реагировать на перетаскивание, разворачивание, закрытие. Так что, как минимум, обработчик по умолчанию (у меня, по крайней мере) продолжает работать.
|
|||
карма: 1 |
|
Ответов: 1926
Рейтинг: 172
|
|||
1nd1g0 писал(а): Окно продолжает реагировать на перетаскивание и разворачивание, так что как минимум обработчик по умолчанию (у меня, по крайней мере) продолжает реагировать.И у меня так же. |
|||
карма: 9 |
|
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
Я нашел место блокировки, оно находится вот здесь, в главной форме
Метод EventOff Но я не буду его править до тех пор, пока мне не скажут для чего его туда поставили, ведь для чего-то он там стоит ------------ Дoбавленo в 15.17: 1nd1g0 писал(а): Хочешь сказать, частично закрывается обработка сообщенийРазобрался уже, внутри формы его вырубают после события onClose, и все, дальше уже никак не вернуть ------------ Дoбавленo в 15.18: Кому не вмоготу такой подход, может у себя поставить ремарку на этом методе, но чисто на свой страх и риск, или написать автору и спросить, зачем он поставил там этот метод |
|||
карма: 22 |
|
Ответов: 1926
Рейтинг: 172
|
|||
Это Dilm'у спрашивать надо, но где его найти теперь?
|
|||
карма: 9 |
|
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
3042 писал(а): Это Dilm'у спрашивать надо, но где его найти теперь?Вот вам решение вопроса, только не нойте, ради всего святого code_27664.txt |
|||
карма: 22 |
| ||
файлы: 1 | code_27664.txt [1KB] [290] |
Ответов: 1926
Рейтинг: 172
|
|||
nesco, я не ною, а лишь сообщаю об ошибках, разве не так раздел называется? Собственно, за 6 лет использования HiAsm впервые столкнулся с этой проблемой, но посчитал нужным описать её, чтобы другие не спотыкались. Ну и при наличии возможности чтобы решили проблему; чтобы, раз новых версий HiAsm не выходит, старые улучшались.
Но если nesco писал(а): Но я не буду его править до тех пор, пока мне не скажут для чего его туда поставили, ведь для чего-то он там стоит , то на "нет" и суда нет. |
|||
карма: 9 |
|
Разработчик
Ответов: 26149
Рейтинг: 2127
|
|||
3042 писал(а): на "нет" и суда нетЯ не могу править то, что не знаю для чего стоит. Для чего вырубают события, совершенно не ясно, могу предположить только, что возможны ситуации, когда могут возникнуть при выходе какие-то совсем не нужные действия в схеме, к примеру, из параллельного потока. К тому же, такие ситуации, как ты привел, бывают один раз в восемь лет, ну не встречал я такого раньше -- нажать выход и пытаться елозить формой, специально придумать надо еще такое |
|||
карма: 22 |
|
14