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

07/07/2022

0

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

Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar