Hola a todos
Estoy creando un objeto que hereda de un OCX.
Se trata, entre otras cosas, de controlar con mi programa el estado de una máquina...
Yo quiero que la máquina (una especie de teléfono) sea controlada por el programa y no por el usuario
Pero el usuario puede (aunque no debe)
"meter mano"...
Os pongo un código de ejemplo:
La declaración:
Código Delphi
[-]
type
TEstados = (eDesconocido,eLibre,eOcupado); TMiObjeto = class(TElOCX) protected
FEstado:TEstados;
private
procedure SetEstado(NuevoEstado:TEstados);
function GetEstado:TEstados;
public
property Estado:TEstados read GetEstado Write SetEstado;
destructor Destroy;override;
constructor Create(AOwner: TComponent);override;
end;
Y la implementación:
Código Delphi
[-]
implementation
constructor TMiObjeto.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
end;
destructor TMiObjeto.Destroy;
begin
inherited Destroy;
end;
function TMiObjeto.GetEstado: TEstados;
var
Datos:WideString; Modo:TOleEnum; EstadoReal:TEstados;begin
Result := FEstado; FuncionOCX(Modo,Datos);
case Modo of
ctc_Ready: EstadoReal := eLibre;
ctc_NotReady: EstadoReal := eOcupado;
else
EstadoReal := eDesconocido;
end;
if (EstadoReal<>eDesconocido) and (EstadoReal<>Result) then begin
FEstado := eDesconocido; Estado := Result; end;
end;
procedure TMiObjeto.SetEstado(NuevoEstado: TEstados);
begin
if (FEstado=NuevoEstado) then Exit;
case NuevoEstado of
eLibre: FuncionOCX(ParametrosA);
eOcupado: FuncionOCX(ParametrosB);
end;
FEstado := NuevoEstado;
end;
Tengo definida una propiedad para el estado, y el programa es el que lo gestiona.
Mi duda es: he puesto en el GetEstado una comprobación. Miro si el estado registrado en mi programa es el mismo que el estado real del teléfono (por si el usuario...).
Si no es igual hago una llamada al SetEstado y lo cambio.
¿Es correcto llamar al Set desde el Get?
No sé si me he explicado bien
...
Os agradeceré cualquier sugerencia...
Un saludo