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

Вниз

MouseDown Up Move   Найти похожие ветки 

 
race1   (2005-07-10 16:57) [0]

Есть класс, наследуемый от TCustomControl, экземпляры создаются в ран-тайме, т.е. это не компонент, который устанавливается. Я хочу обработывать нажатие\отпускание мышки и её передвижение. Пишу так:

TSizer = class (TCustomControl)
private
  procedure Paint; override;
  procedure MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer); override;
...
procedure TSizer.MouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
...
end;

И хотя эта процедура компилится (синенькие кружочки слева), но не вызывается. Ставил точку останова, ничего не произошло. Хотя Paint вызывается нормально...

Из-за чего такое?


 
Просто Джо ©   (2005-07-10 17:36) [1]


> Ставил точку останова, ничего не произошло

И где ты ее ставил? То есть, что вместо "..."?


 
race1   (2005-07-10 17:52) [2]

ставил прям на begin. ну и потом по реакции. т.е. контрол должен перемещаться мышкой. а такого не происходит


 
Просто Джо ©   (2005-07-10 18:42) [3]

Если скомпилировать именно тот пример кода, что ты привел (не забываешь, кстати, в обработчике inherited вызывать?) то все работает. А, и еще, перенеси объявление методов в секцию protected. И посмотри, не изменяешь ли ControlStyle?


 
race1   (2005-07-11 14:58) [4]

я знаю, что должно работать :). Пробывал переность в protected, делал inherited, как перед моим кодом, так и после (хотя inherited вроде как просто обработчик OnMouseDown вызывает, но у меня же не компонент на форме). ControlStyle тоже не меняю...


 
sniknik ©   (2005-07-11 15:15) [5]

Paint ты перекрыл (была до тебя), и гдето в событии компонента прототип (вернее твоя т.к. override) процедуры вызывается (вызов описан в родителе). а вот MouseDown похоже исключительно твое изобретение (ты первый описал) и нигде не вызывается.
вот и получилось одно работает другое нет.


 
sniknik ©   (2005-07-11 15:44) [6]

хотя нет. ты прав. должно работать... и работает, проверил оба метода вызываются, значит оба есть(описаны) гдето в предке.


 
Y   (2005-07-11 16:26) [7]

Поставь breakpoints на

TControl.DoMouseDown,
TControl.WMLButtonDown etc.
(+Use Debug DCUs, соответственно)

и посмотри через F7, что там на самом деле происходит.
Mожет, у тебя флаг csNoStdEvents поставлен
или обработчик WMLButtonDown перекрыт без вызова inherited.

PS В простом тесте всё работает.


 
race1   (2005-07-11 18:03) [8]

спасибо всем за участие. действительно, ошибка не в классе. я в программе сделал обработчки OnMessage, там не пропускал никакие сообщения кроме WM_PAINT... т.е. сообщения что мышка двигается над моим контролом приходило, но я его блокировал и оно не доходило до контрола. и всего-то :)



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

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

Наверх





Память: 0.46 MB
Время: 0.032 c
3-1119422296
vok
2005-06-22 10:38
2005.07.31
Отчет


1-1121159248
ZSergey
2005-07-12 13:07
2005.07.31
Инициализация динамического двумерного массива


3-1118912182
KorvinOE
2005-06-16 12:56
2005.07.31
Типы данных в MySQL


5-1091542196
Сашенька
2004-08-03 18:09
2005.07.31
Как узнать что мой компонент находится в run-time


1-1121082788
Catik
2005-07-11 15:53
2005.07.31
Есть число или 5-значное 70001 или 6-значное 120034





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский