![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как проверить, находится ли курсор над компонентом или нет? [D5, Win95/98]
PlaZZma © (2002-02-12 17:17:00)Подскажите, плз, как проверить, находится ли курсор над компонентом или нет? Или как работать с CM_MOUSEENTER и CM_MOUSELEAVE.
PlaZZma (2002-02-12 23:48:00) [1]Аггггромное спасибо!!!
Бурундук (2002-02-12 21:32:00) [2]Стандартный обработчик сообщений CM_MOUSEENTER/CM_MOUSELEAVE
посылает их родителю(в lParam находится указатель на себя),
поэтому можно поймать их так (для контролов, которые лежат
непосредственно на форме):
TForm1 = class(TForm)
...
procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
...
end;
procedure TForm1.CMMouseEnter(var Msg: TMessage);
begin
if Msg.lParam <> 0 then
Caption := "Enter " + TComponent(Msg.lParam).Name
else
Caption := "";
end;
Причем этот метод сработает и для потомков TGraphicControl.
(Для тех, чей Parent <> Form, можно переписать
оконную ф-ю у Parent"a, как было предложено выше)
Набережных С. (2002-02-12 20:56:00) [3]Так-же, как и любое другое сообщение:
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
или так:
FOldBtnPrc:TWndMethod;
procedure TForm0.NewBtnPrc(var Msg: TMessage);
begin
case Msg.Msg of
CM_MOUSEENTER: Button2.Caption:="Enter";
CM_MOUSELEAVE: Button2.Caption:="Leave";
else FOldBtnPrc(Msg);
end;
end;
procedure TForm0.FormCreate(Sender: TObject);
begin
FOldBtnPrc:=Button2.WindowProc;
Button2.WindowProc:=NewBtnPrc;
end;
Fedorenko Igor (2002-02-12 17:47:00) [4]Если не мувится, то смысла нет :)
Johnmen (2002-02-12 17:33:00) [5]>Fedorenko Igor : А если в данный момент мыша не мувится ?
Fedorenko Igor (2002-02-12 17:21:00) [6]используй событие OnMouseMove