![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отловить событи, когда курсор вышел за пределы фотографии? [D7, Win95/98, WinXP]
xkiller © (2004-11-09 14:35:00)Как отловить событие, когда курсор только-только вышел за пределы фотографии?
begin...end (2004-11-11 18:09:00) [21]debuger © (11.11.04 17:55) [12]
> Смотреть хелп! Разве существует CM_MOUSELEAVE ???
Представьте себе, - существует.
> Вы уверены, что фотография это не коврик для мыши?
Почему-то уверен.
xkiller (2004-11-11 18:09:00) [22]опять ошибка в этой строке
"[Error] MyImage.pas(14): Unsatisfied forward or external declaration: 'TMyImage.CMMouseLeave'"
debuger (2004-11-11 17:55:00) [23][0]
Lingvo X.0 + Win32 Developers Reference -> Find -> WM_MOUSELEAVE
see: TrackMouseEvent // NT only
[10]
>> Что делать?
Смотреть хелп! Разве существует CM_MOUSELEAVE ???
[9]
Вы уверены, что фотография это не коврик для мыши?
begin...end (2004-11-11 17:47:00) [24]xkiller (11.11.04 17:34) [10]
Извиняюсь.
procedure CMMouseLeave( varMessage: TMessage); message CM_MOUSELEAVE
И в реализации:
procedure TMyImage.CMMouseLeave( varMessage: TMessage)
Сообщите о результатах.
xkiller (2004-11-11 17:34:00) [25]Значит надо написать свой компонент? Я пишу:
unit MyImage;
interface
uses
SysUtils, Classes, Controls, ExtCtrls, Messages;
type
TMyImage = class(TImage)
private
{ Private declarations }
protected
{ Protected declarations }
procedure CMMouseLeave(Message: TMessage); message CM_MOUSELEAVE;
public
{ Public declarations }
published
{ Published declarations }
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('MyVCL', [TMyImage]);
end;
end.
а в программе обрабатывать событие:
procedure TMyImage.CMMouseLeave(Message: TMessage);
begin
// Мышь ушла, реагируем на это
end.
Я вроде так понял... Написал этот компонент (см. выше) но у меня почему-то он не ставится выдвет ошибку в строке
procedure CMMouseLeave(Message: TMessage); message CM_MOUSELEAVE;
Что делать?
begin...end (2004-11-09 19:10:00) [26]Digitman © (09.11.04 17:08) [8]
>TImage = "фотография" ?
Спорим? :-)))
Digitman (2004-11-09 17:08:00) [27]
> begin...end
TImage = "фотография" ?
ришпекты телепатам.
begin...end (2004-11-09 15:48:00) [28]xkiller (09.11.04 15:12) [5]
Что-то вроде этого, не проверял...
type
TMyImage = class(TImage)
protected
procedure CMMouseLeave(Message: TMessage); message CM_MOUSELEAVE;
end;
...
procedure TMyImage.CMMouseLeave(Message: TMessage);
begin
// Мышь ушла, реагируем на это
end.
xkiller (2004-11-09 15:41:00) [29]Удалено модератором
xkiller (2004-11-09 15:12:00) [30]begin...end Это API сообщение? Как мне его обрабатывать? Помоги плиз!
Symb (2004-11-09 14:57:00) [31]Перемещение курсора не проходит бесследно. Не только если он вышел за пределы фотографии, но и при неосторожном задевании мышки ногой, системой генерируются всяческие события, оповещающие заинтересованные формы и контролы о новых координатах указателя. Зная координаты фотографии, несложно определить, вышел ли он за ее границы. А "только-только" означает, что при прошлой проверке он еще был на ней, а теперь -- уже нет.
begin...end (2004-11-09 14:47:00) [32]Т.е. CM_MOUSELEAVE
begin...end (2004-11-09 14:46:00) [33]WM_MOUSELEAVE ?
Digitman (2004-11-09 14:42:00) [34]нанять Штирлица в качестве частного сыскного агента.