Главная страница
    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.037 c
1-1121090924
webpauk
2005-07-11 18:08
2005.07.31
Глюки с закрытием приложения


1-1121088537
webpauk
2005-07-11 17:28
2005.07.31
Посылка сообщения


3-1118302398
Lenik
2005-06-09 11:33
2005.07.31
Как из программы на делфи запустить встроенную процедуру SQL серв


3-1118924142
Lenz
2005-06-16 16:15
2005.07.31
Как изменить структуру базы данных (dbf) если исходная на SQL


14-1120815378
lookin
2005-07-08 13:36
2005.07.31
Высокоскоростная съемка





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