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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 06.04.2012, 20:32   #1
Spiker
Новичок
Джуниор
 
Аватар для Spiker
 
Регистрация: 21.02.2009
Сообщений: 1
Вопрос Сообытия в компоненте

Суть такая: Создал компонент на основе TImage. Теперь хочу создать в нём событие, которое будет реагировать, когда курсор на него наводиться. Но как это сделать? Если бонально просто, в TImage нет сообытия OnMove. Как же его туда добавить? Просто по сообщениям из Windows пока ни изучил материал. Как это хоть делаеться?
Код:
type
  TMyEvent =  procedure(Sender: TObject) of object;
  TButonImage = class (TImage)
  private
    Events: TApplicationEvents;
    fIndex: Integer;
    fOnMouseMove: TMyEvent;
    procedure DoOnMouseMove(Sender:TObject);
    procedure SetIndex(Index:Integer);
    procedure SetPicture(Name:string);

  published
    property Index: Integer read fIndex write SetIndex;
    property OnMouseMove: TMyEvent read fOnMouseMove;
  public
    constructor Create(Aowner: TComponent);
end;

implementation

uses Unit1;
{ ButonImage }

constructor TButonImage.Create(Aowner: TComponent);
begin
  inherited Create(Aowner);
  Parent:=TWinControl(Aowner);
  Self.Height:=100;
  Self.Width:=100;
SetIndex(0);
Self.Perform(WM_MOUSEMOVE,0,0);
end;

procedure TButonImage.DoOnMouseMove(Sender: TObject);
begin
  if Sender = Self then
    if Assigned(fOnMouseMove) then fOnMouseMove(Self)
    else
      begin
      SetIndex(0);
      end;
end;

procedure TButonImage.SetIndex(Index: Integer);
begin
fIndex:=Index;
case fIndex of
  -1: SetPicture('11.png');
   0: SetPicture('12.png');
   1: SetPicture('13.png');
end;
end;

procedure TButonImage.SetPicture(Name: string);
begin
Self.Picture.LoadFromFile(Name);
end;

end.
Spiker вне форума Ответить с цитированием
Старый 09.04.2012, 14:31   #2
Aleksandr_59
Пользователь
 
Регистрация: 14.10.2011
Сообщений: 77
По умолчанию

В компоненте TImage есть обработчик события OnMouseMove. В этом обработчике сделать анализ координат курсора... А может и не надо - событие возникнет при перемещении курсора по картинке.
Aleksandr_59 вне форума Ответить с цитированием
Старый 10.04.2012, 19:06   #3
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,515
По умолчанию

Цитата:
Message methods implement responses to dynamically dispatched messages. The message method syntax is supported on all platforms.
Код:
type 
TMyImage =class(TImage)
private
   FonMouseenter: TnotifyEvent;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
public
   property OnMouseenter: TnotifyEvent;
end;
Код:
procedure TmyImage.CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
begin
  if assignd(FonMouseEnter) then FonMouseEnter(self);
end;
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 10.04.2012 в 19:11.
evg_m вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
событие в не созданном компоненте divwond Общие вопросы Delphi 4 24.02.2011 10:48
поток в компоненте ZuBy Общие вопросы Delphi 5 24.08.2010 18:02
ошибка в компОненте BussinessSkinForm TaYgA Компоненты Delphi 1 01.11.2009 16:50
ошибка в компоненте DeDoK Общие вопросы Delphi 2 22.09.2009 01:39
Ошибка впользовательском компоненте Demosx Общие вопросы .NET 0 02.07.2008 13:52