Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как отловить событи, когда курсор вышел за пределы фотографии? [D7, Win95/98, WinXP]


Страницы:   1 2

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]

нанять Штирлица в качестве частного сыскного агента.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо