Ver Mensaje Individual
  #5  
Antiguo 28-06-2005
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Reputación: 28
jachguate Va por buen camino
Cool

Cita:
Empezado por yusnerqui
Bueno pues yo me voy por el ámbito de las variables, si las variables están declaradas dentro del botón que las creas, como es posible que las quieras ver desde otro botón para destruirlas. Solución haz la declaración de las variables en la sesión private de la unit.
No estoy de acuerdo en este punto, puesto que las variables "objeto" en delphi son un puntero, y un objeto puede existir en memoria aún cuando no esté apuntado por ninguna variable.

En este caso particular, al tratarse de controles, aún cuando la variable utilizada para crearlo salga de ámbito, la forma guardará un puntero a dichos objetos en su propiedad controls, que es un arreglo, siendo perfectamente válido hacer algo como:

Código Delphi [-]
Procedure TForm1.Button1Click(sender : TObject);

Var
  b : TButton;

Begin
  b := TButton.Create(self);
  b.Parent := self;
  b.Caption := 'Prueba';
  //Aqui la variable sale de ámbito!
end;

Procedure TForm1.Button2Click(sender : TObject);

Begin
  // Destruye el último control asociado a la forma,
  // Si se ha pulsado el boton1, destruye el botón creado dinámicamente,
  // pero también puede destruir un control creado en tiempo de diseño.
  Controls[ControlCount - 1].Free;  
end;

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita