-
webpauk © (25.04.08 10:50) [0]TCalcProp = class(TPersistent)
private
fCalcBorderWidth: Integer;
fCalcDelta: Integer;
fCalcEditLeft: Integer;
fCalcEditWidth: Integer;
procedure SetCalcBorderWidth(const Value: Integer);
procedure SetCalcDelta(const Value: Integer);
procedure SetCalcEditLeft(const Value: Integer);
procedure SetCalcEditWidth(const Value: Integer);
public
constructor Create;
destructor Destroy; override;
published
property CalcBorderWidth: Integer read fCalcBorderWidth write SetCalcBorderWidth;
property CalcDelta: Integer read fCalcDelta write SetCalcDelta;
property CalcEditLeft: Integer read fCalcEditLeft write SetCalcEditLeft;
property CalcEditWidth: Integer read fCalcEditWidth write SetCalcEditWidth ;
end;TCalc = class(Tpanel)
private
fCalcProp: TCalcProp ;
procedure SetCalcProp(const Value: TCalcProp );
public
constructor Create;
destructor Destroy; override;
published
property CalcProp: Integer read fCalcPropwrite SetCalcProp;
end;
как в компоненте TCalc узнать об изменении CalcProp.CalcBorderWidth -
ЮЮ © (25.04.08 11:17) [1]Например так же, как форма узнает об изменении размера панели. (См. OnResize event (TControl))
Причем TCalcProp.OnCalcBorderWidthChange лучше не публиковать. Достаточно public. И в TCalc.SetCalcProp назначить TCalcProp-у в качестве обработчика соответствующий метод TCalc-а. -
webpauk © (25.04.08 11:37) [2]
> ЮЮ © (25.04.08 11:17) [1]
сделал по другому:constructor Tcalc.Create(Aowner: Tpanel);
procedure SetCalcBorderWidth(const Value: Integer);
begin
...
Tpanel(fOwner).Perform(WM_CHANGE, Integer(prBorder), 0) -
{RASkov} © (25.04.08 12:20) [3]> [0] webpauk © (25.04.08 10:50)
> как в компоненте TCalc узнать об изменении CalcProp.CalcBorderWidth
в методе SetCalcBorderWidth об этом будет известно. -
{RASkov} © (25.04.08 12:22) [4]Ой, там же два класса...
-
{RASkov} © (25.04.08 12:28) [5]Мне кажется, что TCalcProp должен знать о своем TCalc и при необходимости вызывать напрямую методы TCalc.
-
webpauk © (25.04.08 12:33) [6]
> {RASkov} © (25.04.08 12:28) [5]
вообщем-то, так и сделал...