Witam, zacznę od tego co mój komponent ma robić. Ma on być buttonem który po najechaniu na niego myszką zwiększa się wraz z czcionką która zyskuje jednoczesnie podkreslenie po odejsciu myszki z przycisku wszystko wraca do poprzedniego stanu. Problem jest jednak następujący wszystko działa tak jak należy gdy program zostaje uruchomiony jednak gdy mam otwarty projekt formatki to po najechaniu na te przyciski zwiekszaja sie one mimo iz program jest nie uruchomiony i na dodatek nie powracają do poprzedniego stanu.
Tutaj kod komponentu :
unit Button2;
interface
uses
Windows, Messages, SysUtils, Graphics, Classes, Dialogs, Controls,
StdCtrls;
type
TButton2 = class(TButton)
private
FOnMouseEnter, FOnMouseLeave : TNotifyEvent;
FDefaultFontColor : TColor;
FDefaultFontStyle : TFontStyles;
FDefaultHeight : integer;
FDefaultWidth : integer;
FDefaultFontSize : integer;
protected
procedure CmMouseEnter(var Message : TMessage); message
CM_MOUSEENTER;
procedure CmMouseLeave(var Message : TMessage); message
CM_MOUSELEAVE;
public
constructor Create(AOwner : TComponent); override;
destructor Destroy; override;
published
property OnMouseEnter : TNotifyEvent read FOnMouseEnter write
FOnMouseEnter;
property OnMouseLeave : TNotifyEvent read FOnMouseLeave write
FOnMouseLeave;
end;
procedure Register;
implementation
constructor TButton2.Create(AOwner:TComponent);
begin
inherited;
end;
destructor TButton2.Destroy();
begin
inherited;
end;
procedure TButton2.CMMouseEnter(var Message : TMessage);
begin
inherited;
{ je.eli wykorzystane jest zdarzenie FOnMouseEnter ? wywo.aj je }
if Assigned(FOnMouseEnter) then OnMouseEnter(Self);
FDefaultFontColor := Font.Color; // pobierz do zmiennej kolor
FDefaultFontStyle := Font.Style; // pobierz styl czcionki
FDefaultHeight := Height;
FDefaultWidth := Width;
FDefaultFontSize :=Font.Size;
Font.Style := Font.Style + [fsUnderline]; // dodaj podkre.lenie
Cursor :=cRHandPoint;
Height:= FDefaultHeight + 40;
Width:= FDefaultWidth + 40;
Font.Size := FDefaultFontSize + 10;
Font.Color := clRed;
end;
procedure TButton2.CmMouseLeave(var Message : TMessage);
begin
inherited;
{ je.eli wykorzystane jest zdarzenie FOnMousLeave ? wywo.aj je }
if Assigned(FOnMouseLeave) then OnMouseLeave(Self);
{ przywro. zapisane w zmiennej dane }
Font.Color := FDefaultFontColor;
Font.Style := FDefaultFontStyle;
Cursor := crDefault;
Height:= FDefaultHeight;
Width := FDefaultWidth;
Font.Size := FDefaultFontSize;
end;
procedure Register;
begin
RegisterComponents('butttony', [TButton2]);
end;
end.