Cita:
Empezado por ecfisa
Hola.
Es que la clase TProperties no hereda de TMiEdit ni compone ninguna instancia de ella. No está enterada de la existencia de la clase TMiEdit y por tanto no puede hacer referencia a ningún método o atributo de ella.
Saludos
|
Gracias por responder ecfisa, mas o menos suponía lo que indicas, la mejor opción solución que busque por la web fue crear un evento en la clase TPersistent donde notifica los cambios
de las propiedades de TPeristent a la clase contenedora ( TMiEdit ) para hacer las acciones correspondientes. Funciona bien!
Muchas Gracias !!
Código Delphi
[-]
TProperties = class(TPersistent)
private
FDisabledColor: TColor;
...
FOnChange: TNotifyEvent;
procedure Changed;
procedure SetDisabledColor(Value: TColor);
...
end;
procedure TProperties.Changed;
begin
if Assigned(FOnChange) then
FOnChange(Self);
end;
procedure TProperties.SetDisabledColor(Value: TColor);
begin
if FDisabledColor <> Value then
begin
FDisabledColor := Value;
Changed; <<---notifico a la clase contenedora que se ha cambiado el color
end;
end;
constructor TMiEdit.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
FProperties := TProperties.Create;
FProperties.OnChange := PropertiesChanged; <<---aqui se asigna el procedimiento local al evento de Tpersistent
...
end;
procedure TMiEdit.PropertiesChanged(Sender: TObject);
begin
if Enabled then <<---aqui por fin puedo hacer referencia a mi mismo objeto
begin
inherited Color := Color;
Font.Color := FProperties.EnabledTextColor;
end
else
begin
inherited Color := FProperties.DisabledColor;
Font.Color := FProperties.DisabledTextColor;
end;
end;