@misiakufal - ten kod:
TTestEdit = class(TEdit)
private
_tc:TColor;
{ Private declarations }
protected
{ Protected declarations }
public
constructor Create(AOwner:TComponent); overload; // wtf?
{ Public declarations }
published
property tmp:TColor read _tc write _tc default clGreen;
{ Published declarations }
end;
procedure Register;
implementation
constructor TTestEdit.Create(AOwner:TComponent);
begin
self.tmp:=clGreen;
end;
jest błędny - nie wywołujesz konstruktora bazowego (przez Inherited);
Sprawdziłem u siebie bo coś mi się wierzyć nie chciało - sam tworzyłem kontrolki, które posiadały dodatkowe właściwości typu TColor i wszystko zawsze ustawiałem w konstruktorze (bez magicznego słówka Default) i zawsze działało bez najmniejszego problemu; Sprawdziłem jeszcze raz - taki sam efekt; Wystarczy kolor zainicjować w konstruktorze i zarówno podczas projektowania formularzy oraz działania programu kolor jest taki, jaki tego chce;
Poza tym konstruktor powinien być przesłonięty (magiczne słówko Override) a nie przeładowany (słówkiem Overload) - pewnie dlatego kolor nie jest ustawiany w konstruktorze, bo przy tworzeniu kontrolki wykorzystywany jest bazowy (w którym inicjacji koloru nie ma) zamiast Twojego;
Zainstaluj u siebie kontrolkę o takim kodzie:
unit FooEdit;
interface
uses
SysUtils, Classes, Controls, StdCtrls, Graphics;
type
TFooEdit = class(TEdit)
private
FTmpColor: TColor;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy(); override;
published
property TmpColor: TColor read FTmpColor write FTmpColor;
end;
procedure Register;
implementation
constructor TFooEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FTmpColor := clGreen;
end;
destructor TFooEdit.Destroy();
begin
inherited Destroy();
end;
procedure Register;
begin
RegisterComponents('FooControls', [TFooEdit]);
end;
end.
i sprawdź czy działa; Co prawda sprawdzany pod Delphi 7, ale powinien być kompatybilny.