Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Diferencia entre eliminar y terminar ¿COMPONENTSTATE? (https://www.clubdelphi.com/foros/showthread.php?t=72971)

ElDuc 23-03-2011 12:36:17

Diferencia entre eliminar y terminar ¿COMPONENTSTATE?
 
Hola Delphicolegas.

Tengo un problemilla con el que seguro me pueden ayudar.

Estoy diseñando un componente y necesito diferenciar 4 momentos diferentes:
  1. Cuando se crea el componente porque, durante el diseño, ha sido insertado por el programador.
  2. Cuando se crea el componente porque se está ejecutando la aplicación.
  3. Cuando se destruye el componente porque, durante el diseño, ha sido eliminado por el programado.
  4. Cuando se destruye el componente porque se termina la aplicación o se destruye el formulario que contiene el componente.
Estoy probando con ComponentState, pero después de horas haciendo diferentes combinaciones no soy capaz de dar con la solución.

No sé si es mi torpeza o que simplemente no se hace asi o que no se puede hacer. :rolleyes:

Trabajo con Delphi 2010, aunque creo que esto es indiferente.

Les doy las gracias por su interes.

Neftali [Germán.Estévez] 23-03-2011 13:55:31

Cita:

Empezado por ElDuc (Mensaje 394340)
  1. Cuando se crea el componente porque, durante el diseño, ha sido insertado por el programador.
  2. Cuando se crea el componente porque se está ejecutando la aplicación.
  3. Cuando se destruye el componente porque, durante el diseño, ha sido eliminado por el programado.
  4. Cuando se destruye el componente porque se termina la aplicación o se destruye el formulario que contiene el componente..

Yo redefiniría los métodos Create y Destroy del componente.
Código Delphi [-]
  public
    // Constructor.
    Constructor Create(AOwner: TComponent); override;
    // destructor
    destructor Destroy; override;

Y en cada uno de ellos defines la siguiente condición:

Código Delphi [-]
  // Está en diseño ?
  if (csDesigning in Self.ComponentState) then begin
    ...DISEÑO
  end
  else begin
    ...NO EN DISEÑO
  end;


La franja horaria es GMT +2. Ahora son las 06:05:20.

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