Показать сообщение отдельно
Старый 31.08.2004, 19:45     # 11
spleenJack
Member
 
Аватар для spleenJack
 
Регистрация: 14.12.2003
Адрес: Дубна
Сообщения: 201

spleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царствеspleenJack Луч света в тёмном царстве
Ничего сложного тут нету - надо создать новый компонент, предка от TSpeedButton для отлова CM_MOUSEENTER и CM_MOUSELEAVE.

Первая кнопка должна быть TwiceSpeedButton, а вторая обычный SpeedButton. Если хочешь, это можно легко исправить. Свойство SecondButton - твоя вторая кнопка.

Думаю разберешься, че с этим делать - будут вопросы, пиши.

Код:
unit TwiceSpeedButton;

interface

uses
  Classes, Controls, Buttons, Messages;

type
  TTwiceSpeedButton = class(TSpeedButton)
  private
    FSecondButton: TSpeedButton;
    procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
  published
    property SecondButton: TSpeedButton read FSecondButton write FSecondButton;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('AriX', [TTwiceSpeedButton]);
end;

{ TTwiceSpeedButton }

procedure TTwiceSpeedButton.CMMouseEnter(var Message: TMessage);
begin
  inherited;
  if (FSecondButton <> nil) and (FSecondButton.Flat) then
    FSecondButton.Perform(CM_MOUSEENTER, 0, 0);
end;

procedure TTwiceSpeedButton.CMMouseLeave(var Message: TMessage);
begin
  inherited;
  if (FSecondButton <> nil) and (FSecondButton.Flat) then
    FSecondButton.Perform(CM_MOUSELEAVE, 0, 0);
end;

end.
spleenJack вне форума