Вот уже неделю пытаюсь понять, где ошибка. Написал свой компонент TFormCaption - наследника TComponent, у него есть св-во - объект TCaptionButton, для которого определил св-во Position. Меняю свойство в Designtime на 5, затем компилю программу и запускаю её в Runtime, но свойство остаётся равным 4. Что происходит в момент изменения свойства в инспекторе объектов, как сохранить изменения?
Вот выдержка из кода:
type
TCaptionButton = class (TComponent)
private
FButtonPosition : Byte;
procedure SetButtonPosition( const Value: Byte );
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
property Position: Byte read FButtonPosition write SetButtonPosition default 4;
end;
TFormCaption = class(TComponent)
private
FCaptionButton : TCaptionButton;
FOnButtonClick : TNotifyEvent;
FOnButtonMouseMove: TMouseMoveEvent;
procedure DrawButton;
protected
procedure ButtonClick; dynamic;
procedure ButtonMouseMove(Shift: TShiftState; X, Y: Integer); dynamic;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
property Button: TCaptionButton read FCaptionButton write FCaptionButton;
property OnButtonMouseMove: TMouseMoveEvent read FOnButtonMouseMove write FOnButtonMouseMove;
property OnButtonClick: TNotifyEvent read FOnButtonClick write FOnButtonClick;
end;
procedure Register;
implementation
constructor TCaptionButton.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FButtonPosition := 4;
end;
destructor TCaptionButton.Destroy;
begin
inherited Destroy;
end;
procedure TCaptionButton.SetButtonPosition(const Value: Byte);
begin
if Value <> FButtonPosition then
begin
FButtonPosition:=Value;
end;
end;
constructor TFormCaption.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
Button:=TCaptionButton.Create(Self);
end;
procedure Register;
begin
RegisterComponents('Additional', [TFormCaption]);
RegisterPropertyEditor( TypeInfo( TCaptionButton ), TFormCaption, 'Button', TClassProperty ) ;
end;
end.