Delphi - komponent

2

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.
 
0

Może to pomoże: http://www.delphigroups.info/2/9a/528901.html - nie mogłem znaleźć arta tu na 4p o pisaniu jakiegoś tam animowanego Labela, więc wyszukałem po angielsku delphi "prevent design time".

1 użytkowników online, w tym zalogowanych: 0, gości: 1