Показать сообщение отдельно
  #9  
Старый 08.04.2012, 09:03
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
Восклицание

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls;

type
  TExImage = class(TImage)
  private
    FOnMouseEnter: TNotifyEvent;
    FOnMouseLeave: TNotifyEvent;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  published
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
  end;

  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure MouseEnter(Sender: TObject);
    procedure MouseLeave(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TExImage }

procedure TExImage.CMMouseEnter(var Message: TMessage);
begin
  if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;

procedure TExImage.CMMouseLeave(var Message: TMessage);
begin
  if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;

{ TForm1 }

procedure TForm1.FormCreate(Sender: TObject);
begin
  with TExImage.Create(Self) do
  begin
    Parent:=Self;
    Left:=10;
    Top:=10;
    Width:=100;
    Height:=100;
    Canvas.Brush.Color:=clBtnHighlight;
    Canvas.FillRect(ClientRect);
    OnMouseEnter:=MouseEnter;
    OnMouseLeave:=MouseLeave;
  end;
end;

procedure TForm1.MouseEnter(Sender: TObject);
begin
  TExImage(Sender).Canvas.Brush.Color:=clBtnFace;
  TExImage(Sender).Canvas.FillRect(ClientRect);
end;

procedure TForm1.MouseLeave(Sender: TObject);
begin
  TExImage(Sender).Canvas.Brush.Color:=clBtnHighlight;
  TExImage(Sender).Canvas.FillRect(ClientRect);
end;

end.
http://data.cod.ru/147629
__________________
Пишу программы за еду.
__________________
Ответить с цитированием