Конференция "Компоненты" » Изменение свойств [D7, WinXP]
 
  • 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]

    вообщем-то, так и сделал...
 
Конференция "Компоненты" » Изменение свойств [D7, WinXP]
Есть новые Нет новых   [134464   +62][b:0][p:0.001]