Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Круглый стол
  
Правила КС
>> Настройки

Фильтр вопросов
>> Новые вопросы
отслеживать по
>> Новые ответы

Избранное

Страница вопросов
Поиск по КС


Специальные проекты:
>> К л ю к в а
>> Г о л о в о л о м к и

Вопрос №

Задать вопрос
Off-topic вопросы

Помощь

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  08:20[Войти] | [Зарегистрироваться]
Ответ на вопрос № 34555

Клюква | 12-08-2005 05:24
При наведении на TImage происходит событие OnMouseMove. А какое есть событие обратное этому.
Спасибо.

[+] Добавить в избранные вопросы

Отслеживать ответы на этот вопрос по RSS

Ответы:


Уважаемые авторы вопросов! Большая просьба сообщить о результатах решения проблемы на этой странице.
Иначе, следящие за обсуждением, возможно имеющие аналогичные проблемы, не получают ясного представления об их решении. А авторы ответов не получают обратной связи. Что можно расценивать, как проявление неуважения к отвечающим от автора вопроса.

12-08-2005 10:11 | Сообщение от автора вопроса
Всем спасибо!

12-08-2005 09:51
Вы наверное меня не так поняли мне нужно отследить событие при убирании курсора мыши с TImage. Вот и всё

Наверное пятница...

12-08-2005 08:56 | Вопрос к автору: запрос дополнительной информации
Изначально, такое событие не предусмотрено Delphi, собственно тут дали довольно много вариантов замены этого события. Если курсор покидает TImage событие OnMouseMove /Sender-TImage/ перестает выполняться и начинает выполняться событие OnMouseMove компонента, находящегося за границами TImage...
И что подразумевается под "отследить событие?"

12-08-2005 08:54
Sega-Zero:

>>>Делаете наследника от TImage и делаете 2 новых события с отловом данных сообщений

Наследника делать не обязательно. У TImage, как  и у всех визуальных компонентов, есть свойство WindowProc, изменив которое, можно вмешиваться в обработку событий.

12-08-2005 08:38 | Сообщение от автора вопроса
Вы наверное меня не так поняли мне нужно отследить событие при убирании курсора мыши с TImage. Вот и всё
 

12-08-2005 07:19 | Комментарий к предыдущим ответам
Нужно переопределить WindowProc

var
  OldWinProc: TWndMethod;

procedure TForm1.FormCreate(Sender: TObject);
begin
  OldWinProc := Image1.WindowProc;
  Image1.WindowProc := NewWindowProc;
end;

procedure TForm1.ChangeState;
begin
  Image1.Picture.Bitmap.Canvas.FillRect(Image1.ClientRect);
  if ToEnter then begin
    Label1.Caption := 'Enter';
    ImageList1.GetBitmap(0, Image1.Picture.Bitmap);
  end
  else begin
    Label1.Caption := 'Leave';
    ImageList1.GetBitmap(1, Image1.Picture.Bitmap);
  end;
  Image1.Invalidate;
end;

procedure TForm1.NewWindowProc(var Msg: TMessage);
begin
  // все для того, чтоб исключить беспрерывный вызов ChangeState!
  if (Msg.Msg = CM_MouseLeave) or (Msg.Msg = CM_MouseEnter) then begin
    if (not MouseLeave and (Msg.Msg = CM_MouseLeave))
      or (MouseLeave and (Msg.Msg = CM_MouseEnter)) then ChangeState(MouseLeave);
    MouseLeave := (Msg.Msg = CM_MouseLeave);
    Beep; // би-бип
  end;
  OldWinProc(Msg);
end;



А противоположное движению - остановка или покой.

12-08-2005 07:19
>>>И нет там ни каких OnMouseEnter и OnMouseLeave.
Конечно нет! Реакцию на эти сообщения нужно создать самому. Напиши мне на мыло, что именно тебе нужно, и я расскажу как это сделать

12-08-2005 07:09 | Сообщение от автора вопроса
У TImage как и у TForm всего 3 события связанные с мышью:
OnMouseDown, OnMouseUp и OnMouseMove.
И нет там ни каких OnMouseEnter и OnMouseLeave.


12-08-2005 07:08 | Комментарий к предыдущим ответам
Но учти, что CM_MOUSELEAVE глючит, если мышь отдернуть резко. Для решения этой проблемы можно использовать таймер.

12-08-2005 07:03
TControl
CM_MOUSEENTER
CM_MOUSELEAVE

Делаете наследника от TImage и делаете 2 новых события с отловом данных сообщений.

12-08-2005 06:41
привет
может тебе надо OnMouseEnter и OnMouseLeave?
(мышка "заехала" и мышка "уехала")

12-08-2005 06:23
onMouseMove формы (или другого родителя) = "onMouseOut" TImage, на которой расположен TImage, как уже и сказал Дмитрий :)

П.С. сначала ответил, потом заметил уже верный ответ :)

12-08-2005 06:00
Скорее всего Вам нужно
обрабатывать это же событие
у элементов, являющихся родительскими.

12-08-2005 05:42 | Вопрос к автору: запрос дополнительной информации
OnMouseStopped? ;-)

12-08-2005 05:33
onmousemove происходит когда мыша двигается на картинке. когда она не на картинке - оно не происходит :)

Добавьте свое cообщение

Вашe имя:  [Войти]
Ваш адрес (e-mail):На Королевстве все адреса защищаются от спам-роботов
контрольный вопрос:
Однажды, в студеную зимнюю пору я из лесу вышел, был сильный ЧТО?
в качестве ответа на вопрос или загадку следует давать только одно слово в именительном падеже и именно в такой форме, как оно используется в оригинале.
Надоело отвечать на странные вопросы? Зарегистрируйтесь на сайте.
Тип сообщения:
Текст:
Жирный шрифт  Наклонный шрифт  Подчеркнутый шрифт  Выравнивание по центру  Список  Заголовок  Разделительная линия  Код  Маленький шрифт  Крупный шрифт  Цитирование блока текста  Строчное цитирование
  • вопрос Круглого стола № XXX

  • вопрос № YYY в тесте № XXX Рыцарской Квинтаны

  • сообщение № YYY в теме № XXX Базарной площади
  • обсуждение темы № YYY Базарной площади
  •  
     Правила оформления сообщений на Королевстве

    Страница избранных вопросов Круглого стола.
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования