JJ
Зарегистрирован: 18.06.2002 Сообщения: 3
|
Добавлено: Вт Июн 18 2002 19:25 Заголовок сообщения: Сообщения - где эта очередь и кто крайний? |
|
|
В DBCtrlGrid на OnPaintPanel выполняю свою прорисовку панелей, и она, мягко говоря, притормаживает, в зависимости от мощности компа. Если юзер давит на кнопки постоянно, грид отрисовывается инертно. Хочу отключить тормозные операции, временно, чтобы после повторить, когда юзер уймется, прямо в OnPainPanel проверяю GetInputState – она молчит, как рыба об лед, типа нет ничего в очереди, а панели продолжают так же инертно отрисовываться, когда уже никто ничего и не жмет.
procedure TForm1.DBCtrlGrid1PaintPanel(DBCtrlGrid: TDBCtrlGrid; Index: Integer); … If GetInputState() then ….юзер торопится, нельзя выполнять тормозные штуки Else ….мона, все равно он мух ловит. …
Когда, как и где буферизируются и обрабатываются сообщения – загадка, во всяком случае, для меня. Наверно, я чтонить неправильно делаю, но что ? Где эта очередь ? Клава и мыша – полбеды, грид может репозиционироваться , например, и по команде с датасорса (датасета, и т.д….).Судя по исходникам VCL, эти мессаги вообще идут напрямую в контрол через Perform(), мимо очереди, если я не ошибаюсь.И тем не менее они где-то буферизируются….. Вообще, можно ли для конкретного контрола узнать, сколько сообщений стоят к нему в очередь ? И какие ? Если прямого ответа нет, то , плиз, подскажите хотя бы, где самообразоваться мона… |
|
Firelord Гость
|
Добавлено: Ср Июн 19 2002 14:10 Заголовок сообщения: Re: Сообщения - где эта очередь и кто крайний? |
|
|
Если тебе надо просто перерисовку делать, когда юзер перестал твой грид за волосы таскать - повесь перерисовку (или ключик) на Application.OnIdle - как только юзер откопошится, тебе event придет - дескать, можешь перерисовывать. перерисовал - влажок скинул, ну, это как вариант. А отслеживать очередь сообщений, да еще с учетом того, что у Delphi и правда есть какие-то свои сообщения, которые мимо WinProc проходят - неблагодарное дело, IMHO. |
|
JJ
Зарегистрирован: 18.06.2002 Сообщения: 3
|
Добавлено: Чт Июн 20 2002 02:06 Заголовок сообщения: Re: Сообщения - где эта очередь и кто крайний? |
|
|
Цитата из вопроса "Хочу отключить тормозные операции, временно, чтобы после повторить, "
OnIdle - хорошая идея для "после", да и то, если прога действительно всегда стоит, если нет ввода. А вот для "временно отключить" ... |
|