Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Control / reutilización de propiedades (https://www.clubdelphi.com/foros/showthread.php?t=69886)

ElDuc 15-09-2010 19:08:11

Control / reutilización de propiedades
 
Hola otra vez,

Estoy intentado crear un componente derivado de un TImage en D2010.

Lo del D2010 solo es para vuetra información porque en otros Delphis tampoco se hacerlo.

Lo que necesito es controlar en mi componente algunas de las propiedades heredadas del TImage.

Por ejemplo, como ya sabeis, el TImage tiene una propiedad Width, que hereda de algun ancestor, pero yo necesito conocer cuando esta propiedad cambia ¿es esto posible?

Sé que algunos métodos se pueden re-escribir con Overide e Inherited, pero desconozco si hay algo similar para las propiedades.

Una sonrisa :) para todos.

coso 15-09-2010 19:26:20

Hola, si es posible. Una manera es redeclarandola y leyendo/ escribiendo sus valores asi:

Código Delphi [-]

published 
   property Width : integer read GetWidth write SetWidth;

...

function TMiComponente.GetWidth : integer;
begin
       result := inherited Width;
end;

procedure TMiComponente.SetWidth(W : integer);
begin
     Width_Modificado := true;
     inherited Width := W;
end;

...algo asi. La otra manera es que en muchas propiedades, los metodos Get y Set ya existen, por lo tanto tansolo tienes que hacer override de SetWidth en el caso que exista en el TImage (cosa que no recuerdo)

Código Delphi [-]
   ...
   protected
    procedure SetWidth(Width : integer); override; 

...
procedure TMiComponente.SetWidth(Width : integer);
begin
   Width_Modificado := true;
   inherited SetWidth(Width);
end;

Consulta la ayuda mejor para saber si existe el método, y te ahorras trabajo. Otra cosa que te recomendaria seria heredar desde TCustomImage (en el caso que exista, cosa que ... tampoco recuerdo :D) para asi simplificar propiedades publicadas, etc...
Un saludo y espero que te sirva.

ElDuc 15-09-2010 21:25:07

Muchas gracias Coso,

Voy a probarlo y pondré aquí los resultados.

Saludos.


La franja horaria es GMT +2. Ahora son las 18:51:36.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi