Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-03-2005
Avatar de Ohcan
[Ohcan] Ohcan is offline
Miembro Premium
 
Registrado: ago 2004
Ubicación: Madrid (España)
Posts: 119
Poder: 20
Ohcan Va por buen camino
Llamar al Set desde el Get

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);  //Tipo de estados de la máquina
  TMiObjeto = class(TElOCX) //Heredo de un OCX
  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
{ TMiObjeto }
constructor TMiObjeto.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  //[...]
end;
destructor TMiObjeto.Destroy;
begin
  //[...]
  inherited Destroy;
end;
function TMiObjeto.GetEstado: TEstados;
var
  Datos:WideString;   //Luego no se usa
  Modo:TOleEnum;      //Estado real de la máquina
  EstadoReal:TEstados;//Estado real de la máquina
begin
  Result := FEstado;      //Estado en que el programa dice que está
  //Me devuelve le estado (Modo) real
  FuncionOCX(Modo,Datos);
  case Modo of
    ctc_Ready: EstadoReal := eLibre;
    ctc_NotReady: EstadoReal := eOcupado;
  else
    EstadoReal := eDesconocido;
  end;
  //Ahora....
  if (EstadoReal<>eDesconocido) and //Si es desconocido es OK
     (EstadoReal<>Result) then      //Si el estado real no es el que debiera
    begin
      FEstado := eDesconocido; //Por la primera línea del SetEstado
      Estado  := Result;       //Pongo la máquina en el estado que mi programa almacenaba
    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
__________________
La violencia es el último recurso del incompetente. (Salvor Hardin)
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 04:37:48.


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