Доброго времини суток. Ни когда не писал собственых компонентов. И столкнулся с проблемой. Есть код, обычной кнопки, как на этой же кнопке внутри неё создать кнопку меньшего размера?
Код:
unit MyButton;
interface
uses Classes, Vcl.Controls, Windows, Vcl.Graphics, Messages;
type TMyButton = class(TCustomControl)
private
FSelected: Boolean;
FCaption: String;
procedure SetCaption(Val: String);
procedure MEnter(var Mes: TMessage); message CM_MOUSEENTER;
procedure MLeave(var Mes: TMessage); message CM_MOUSELEAVE;
procedure Paint; override;
public
constructor Create(AOwner: TComponent);
property Caption: String read FCaption write SetCaption;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('TMyButton', [TMyButton]);
end;
constructor TMyButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Parent := AOwner as TWinControl;
Width := 100;
Height := 100;
end;
procedure TMyButton.SetCaption(Val: string);
begin
FCaption := Val;
paint;
end;
procedure TMyButton.Paint;
begin
If not FSelected
then
begin
Canvas.Pen.Color := $FFFFFF;
Canvas.Brush.Color := $FFFFFF;
end
else
begin
Canvas.Pen.Color := $EEEEEE;
Canvas.Brush.Color := $EEEEEE;
end;
Canvas.Rectangle(0,0,Width,Height);
Canvas.Font.Color := 0;
Canvas.TextOut((Width - Canvas.TextWidth(FCaption))div 2,(Height - Canvas.TextHeight(FCaption)) div 2,FCaption);
end;
procedure TMyButton.MEnter(var Mes: TMessage);
begin
FSelected := True;
Paint;
end;
procedure TMyButton.MLeave(var Mes: TMessage);
begin
FSelected := False;
Paint;
end;
end.
Буду рад за любые предложения