Mudar o valor de um campo da variável associada em uma

Orientação a Objetos

Delphi

07/07/2022

Olá, estou com uma dúvida conceitual sobre o uso de "property" nas classes.
Uma das utilidades de se usar isso é controlar a leitura e escrita de parâmetros na nossa classe. Pois bem, em alguns testes que fiz tive problema em disparar o método de controle de escrita na varável. Isso porque na Unit que eu usei o objeto eu alterei a escrita de um campo da variável associada ao "Property" . Por exemplo, se declaramos uma classe:
TTeste = class(
  private
    FPen: TPen;
    procedure SetPen(Value: TPen);
  published
    property Pen: TPen read FPen write SetPen;

E usar ela da seguinte forma:
function TFrm.escrever ;
var
  Teste: TTest;
begin
    Teste : = TTest.create;
    Teste.Pen.Color :=  Shape.Brush.Color;
    ...
    ...
    ...
end;

Bem, note que estou escrevendo somente em um campo do "Pen" que é o "Color''.
Ao fazer isso, verifiquei que o procedure associado ao "SetPen" da classe "TPen" não é disparado.

Dúvida:
Esse é um comportamento esperado? ou seja o recurso property não é sensível ao ponto de detectar uma mudança em qualquer campo do objeto declarado, somente na atribuição do objeto completo?
Valseu

Valseu

Curtidas 0
POSTAR