Тема: кнопки
Показать сообщение отдельно
  #5  
Старый 15.02.2010, 22:23
Аватар для Ultras
Ultras Ultras вне форума
Начинающий
 
Регистрация: 09.02.2010
Адрес: Россия / Ставрополь
Сообщения: 138
Репутация: 475
По умолчанию

NIch, зачем такие извращения?

давным давно делал такое:

Код:
unit UltraComp;

interface

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

type

TUButton = class(TButton)
  private
  { Private declarations }
    FOnMouseLeave: TNotifyEvent;
    FOnMouseEnter: TNotifyEvent;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  published
  { Published declarations }
    property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
    property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
end;

procedure Register;

implementation

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

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

procedure Register;
begin
  RegisterComponents('UltraSoft', [TUButton]);
end;
 
end.

потом подключаем этот компонент, кидаем на форму, и юзаем события OnMouseEnter и OnMouseLeave (по аналогии можно сделать для Label, ListBox, ComboBox и т.д.). Для нажатия используем событие OnMouseDown, в нём ставим условие:
Код:
if Button = mbLeft then
begin
  //реакция на нажатие левой кнопки
end;
Ответить с цитированием