![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как сделать однократную перерисовку формы при Resiz'e [D7, XP]
smaller © (2006-12-19 18:24:00)Как сделать, чтобы при изменениеии размера формы (Resize) перерисовка расположенных на ней компонент происходила только один раз - в момент отжатия кнопки мыши? (Второй раз щелкать форму не хотелось бы, а событие OnMouseUp при прекращении Resiz'a по-видимому не генерируется?
smaller (2006-12-20 13:21:00) [1]Ну так я вроде придумал как это обойти - мне onResize нужно только для того, чтобы запустить поток, где будет проверяться, отжата кнопка мыши или нет.
Только я не знаю, как поймать проверять состояние кнопки мыши в потоке- может применить какие-нибудь WinApi процедуры ?
Anatoly Podgoretsky (2006-12-20 12:55:00) [2]> smaller (20.12.2006 12:16:12) [12]
Отжатие кнопки не заведует Resize
smaller (2006-12-20 12:53:00) [3]Вот что попробую - запущу в onResize поток, в котором будет ожидаться отжатие кнопки мыши, и по нему сделаю перерисовку формы.
Только вот пока не знаю, как в потоке лучше уловить отжатие кнопки...
Не подскажете?
smaller (2006-12-20 12:16:00) [4]Стало быть, если нужно не просто отжатие кнопки мыши,
а отжатие кнопки которым заканчивается измение размера формы...
то такая задача не имеет решения ?
Anatoly Podgoretsky (2006-12-20 12:03:00) [5]> smaller (20.12.2006 10:57:10) [10]
Только не в Resize, он мышками не заведует, его интересует только изменение размеров.
smaller (2006-12-20 10:57:00) [6]В том смысле, что это некий цикл, выполняемый непрерывно, пока кнопка мыши нажата. А отжатие кнопки мыши можно как-нибудь поймать или нет?
Anatoly Podgoretsky (2006-12-19 20:42:00) [7]> smaller (19.12.2006 20:29:08) [8]
Resize событие бесконечное.
smaller (2006-12-19 20:29:00) [8]"- Resize не оперирует кнопками, а только изменением размера."
Да, вот это-то и жалко. А нельзя ли все-таки как-нибудь поймать событие, показыващее окончание Resize, и по этому событию запустить отрисовку формы?
Desdechado (2006-12-19 20:19:00) [9]FormResize?
Anatoly Podgoretsky (2006-12-19 19:53:00) [10]> smaller (19.12.2006 18:24:00) [0]
Resize не оперирует кнопками, а только изменением размера.
smaller (2006-12-19 19:19:00) [11]Мой отрисовщик нормально работает если я помещаю его в MyForm.OnMouseUp и просто щелкаю по форме, но не работает, если я отпускаю кнопку мыши, нажатую во время изменения размера формы -
(а мне как раз последнее срабатывание то и нужно) - вот в чем проблема!
Desdechado (2006-12-19 19:00:00) [12]У винды есть настройка рабочего стола такая.
Eraser (2006-12-19 18:59:00) [13]> [2] smaller (19.12.06 18:50)
отрисовщик должен выполнятся только в OnPaint (WM_PAINT).
smaller (2006-12-19 18:50:00) [14]Вряд ли.
Мне нужно, чтобы форма перерисовывалась в тот момент, когда опускается кнопка мыши, которая была нажата во время процесса изменения размера формы, то есть когда курсор был "зацеплен" за край формы. На мой взгляд, проблема в том, что нельзя поймать это событие - оно не оценивается средой как событие OnMouseUp. Это я знаю потому, что если я помещаю свой отрисовщик в OnMouseUp, то ни до ни после изменения размера формы ничего не происходит.
Eraser (2006-12-19 18:25:00) [15]> [0] smaller (19.12.06 18:24)
не совсем понял вопрос, но возможно InvalidateRect поможет.