Mudar o valor de um campo da variável associada em uma
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:
E usar ela da seguinte forma:
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?
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
Curtidas 0