Показать сообщение отдельно
  #1  
Старый 06.04.2012, 21:53
Аватар для Fantomas_RUS
Fantomas_RUS Fantomas_RUS вне форума
Прохожий
 
Регистрация: 12.10.2010
Сообщения: 47
Репутация: 11
Вопрос События в компоненте?

Суть такая: Создал компонент на основе 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.
Ответить с цитированием