Ничего сложного тут нету - надо создать новый компонент, предка от 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.