Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.03.2015, 17:10   #1
AnTe
Форумчанин
 
Регистрация: 25.09.2008
Сообщений: 209
По умолчанию Timage и DoMouseEnter/DoMouseLeave в Embarcadero

Делаю компонент на основе TImage, нужно, чтобы компонент подавал знаки, когда МЫШ приходит на него, и когда уходит

В различных источниках, в том числе, в форуме приводится масса примеров, копипаст о том, как это можно реализовать в старых делфях, то есть, прописываются методы:

Код:
  protected
      { Protected declarations }
      procedure DoMouseEnter; dynamic;
      procedure DoMouseLeave; dynamic;
методы явно вызываются в вендовых обработчиках, которые объявляются в этом же объекте
Код:
  procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
  procedure CMMouseEnter(var Msg: TMessage); message CM_MOUSEENTER;
всё бы ничего, но в Embarcadero, не знаю, с какой версии (у меня ХЕ5) эти обработчики уже прописаны ещё аж в TControl, но с директивой по CLR


Код:
{$IF DEFINED(CLR)}
    procedure DoMouseEnter; virtual;
    procedure DoMouseLeave; virtual;
    procedure FloatControl(DockSource: TDragDockObject); virtual; // replaces use of CM_FLOAT message
    function GetDeviceContext(var WindowHandle: THWndWrapper): HDC; overload; virtual;
{$ELSE}
    function DesignWndProc(var Message: TMessage): Boolean; dynamic;
    function GetDragImages: TDragImageList; virtual;
{$ENDIF}
в общем, когда я объявляю их в своём компоненте

Код:
    
protected
  procedure DoMouseEnter; override;
  procedure DoMouseLeave; override;
мне соответственно вываливают ошибки:

E2137 Method 'DoMouseEnter' not found in base class
E2137 Method 'DoMouseLeave' not found in base class

что-то я торможу, что-то тут не так

понимаю, что можно пойти старым путём и повторить/скопипастить код и перехватить событие самостоятельно, но быть может есть более "правильные" пути?

Последний раз редактировалось AnTe; 25.03.2015 в 17:22.
AnTe вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Embarcadero C++ и InterBase shredinger C/C++ Базы данных 2 02.06.2013 21:29
Embarcadero C++, C OpenCL DARTS C++ Builder 1 07.02.2013 22:18
линии в Embarcadero shanluu Софт 3 01.01.2011 20:43
Акция 2 за 1 от Embarcadero Квэнди Свободное общение 6 30.07.2009 11:16