-
Здравствуйте! Пишу визуальный компонент... Некоторые новые свойства вынес в отдельный класс, типа: tmyprop = class(TPersistent) fcolor2:TColor; ... published property color2:TColor read fcolor2 write setcolor2;
В самом компоненте так: fmyprop:tmyprop; ... published property myprop:tmyprop read fmyprop write setmyprop;
Скажите, как можно заставить компонент перерисовываться при изменении одного из свойств? Проблема в том, что setmyprop не срабатывает при изменении color2...
Заранее Большое спасибо!
-
во всех сеттерах вызывать функцию перерисовки?
-
> Скажите, как можно заставить компонент перерисовываться > при изменении одного из свойств?
в конструктор объекта-свойства передавать Parent, т.е. основной объект которому свойство принадлежит, у которого и дергать нужный метод.
-
TMyProp = class(TPersistent)
fColor2:TColor;
fOnChange: TNotifyEvent;
procedure Change;
...
published
property color2:TColor read fColor2 write SetColor2;
procedure Change;
begin
if Assigned(fOnChange) then fOnChange(self)
end;
TMyComponent = class(TComponent)
fMyProp: TMyProp;
procedure DoChange(Sender: TObject);
end;
constructor TMyComponent.Create(AOwner: TComponent);
begin
inherited;
fMyProp := TMyProp.Create;
fMyProp.OnChange := DoChange;
end;
procedure TMyComponent.DoChange;
begin
invalidate;
end;
-
Огромное спасибо, справился:-)
|