Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Вниз

Как сделать однократную перерисовку формы при Resiz e   Найти похожие ветки 

 
smaller   (2006-12-19 18:24) [0]

Как сделать, чтобы при изменениеии размера формы (Resize)  перерисовка расположенных на ней компонент происходила только один раз - в момент отжатия кнопки мыши? (Второй раз щелкать форму не хотелось бы, а событие OnMouseUp при прекращении Resiz"a по-видимому не генерируется?


 
Eraser ©   (2006-12-19 18:25) [1]

> [0] smaller   (19.12.06 18:24)

не совсем понял вопрос, но возможно InvalidateRect поможет.


 
smaller   (2006-12-19 18:50) [2]

Вряд ли.
Мне нужно, чтобы форма перерисовывалась в тот момент, когда опускается кнопка мыши, которая была нажата во время процесса изменения  размера формы, то есть когда курсор был "зацеплен" за край формы. На мой взгляд, проблема в том, что нельзя поймать это событие - оно не оценивается средой как событие OnMouseUp. Это я знаю потому, что если я помещаю свой отрисовщик в OnMouseUp, то ни до ни после изменения размера формы ничего не происходит.


 
Eraser ©   (2006-12-19 18:59) [3]

> [2] smaller   (19.12.06 18:50)

отрисовщик должен выполнятся только в OnPaint (WM_PAINT).


 
Desdechado ©   (2006-12-19 19:00) [4]

У винды есть настройка рабочего стола такая.


 
smaller   (2006-12-19 19:19) [5]

Мой отрисовщик нормально работает если я помещаю его в MyForm.OnMouseUp и просто щелкаю по форме, но не работает, если я отпускаю кнопку мыши, нажатую во время изменения размера формы -
(а мне как раз последнее срабатывание то и нужно) - вот в чем проблема!


 
Anatoly Podgoretsky ©   (2006-12-19 19:53) [6]

> smaller  (19.12.2006 18:24:00)  [0]

Resize не оперирует кнопками, а только изменением размера.


 
Desdechado ©   (2006-12-19 20:19) [7]

FormResize?


 
smaller   (2006-12-19 20:29) [8]

"- Resize не оперирует кнопками, а только изменением размера."

Да, вот это-то и жалко. А нельзя ли все-таки как-нибудь поймать событие, показыващее окончание Resize, и по этому событию запустить отрисовку формы?


 
Anatoly Podgoretsky ©   (2006-12-19 20:42) [9]

> smaller  (19.12.2006 20:29:08)  [8]

Resize событие бесконечное.


 
smaller   (2006-12-20 10:57) [10]

В том смысле, что это некий цикл, выполняемый непрерывно, пока кнопка мыши нажата. А отжатие кнопки мыши можно как-нибудь поймать или нет?


 
Anatoly Podgoretsky ©   (2006-12-20 12:03) [11]

> smaller  (20.12.2006 10:57:10)  [10]

Только не в Resize, он мышками не заведует, его интересует только изменение размеров.


 
smaller   (2006-12-20 12:16) [12]

Стало быть, если нужно не просто отжатие кнопки мыши,
а отжатие кнопки которым заканчивается измение размера формы...
то такая задача не имеет решения ?


 
smaller   (2006-12-20 12:53) [13]

Вот что попробую - запущу в onResize поток, в котором будет ожидаться отжатие кнопки мыши, и по нему сделаю перерисовку формы.

Только вот пока не знаю, как в потоке лучше уловить отжатие кнопки...
Не подскажете?


 
Anatoly Podgoretsky ©   (2006-12-20 12:55) [14]

> smaller  (20.12.2006 12:16:12)  [12]

Отжатие кнопки не заведует Resize


 
smaller   (2006-12-20 13:21) [15]

Ну так я вроде придумал как это обойти - мне onResize нужно только для того, чтобы запустить поток, где будет проверяться, отжата кнопка мыши или нет.  
Только я не знаю, как поймать проверять состояние кнопки мыши в потоке- может применить какие-нибудь WinApi процедуры ?



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.01.07;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.009 c
8-1147940602
Белый Орёл
2006-05-18 12:23
2007.01.07
Быстрая перемотка DVD


2-1166436237
cvg
2006-12-18 13:03
2007.01.07
Есть ли в Delphi что-то типа is_number?


15-1166125050
xBaguMx
2006-12-14 22:37
2007.01.07
Требуется написать программу для фирмы


15-1166467423
Kolan
2006-12-18 21:43
2007.01.07
По каккому признаку упорядочить файлы и папки на винте?


15-1166206982
Knight
2006-12-15 21:23
2007.01.07
Ini-файл...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский