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