Ver Mensaje Individual
  #8  
Antiguo 26-10-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Reputación: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Varios puntos:

1. Por que preguntar si un objeto es tal clase utilizando strings? No es mejor hacer algo asi

Código Delphi [-]
  EsTFrame1 := UnFrame is TFrame1;

2. No recorras los componentes del form, recorre los controles ya que los frames los creaste en tiempo de ejecucion

3. La sentencia de destruccion:

a. No hace falta que castees a TFrame1 para llamar al metodo destroy
b. No uses destroy explicitamente, usa Free siempre que es mas seguro
c. No estas eliminando la referencia de la lista en cuestion. Lo mas correcto seria
d. Ahora que recuerdo, al eliminar de la lista hay que recorrerla en sentido inverso

Código Delphi [-]
///   borrar todos los frames creados
for I := form1.ControlCount - 1 downto 0 do
begin
  if form1.Controls[i] is TFrame1 then
  begin
    form1.Controls[i].Free;
    form1.Controls.Delete(i); // eliminarlo de la lista
  end;
end;

Con respecto a que el layout no es el esperado no puedo ayudarte mucho mas . Una pena que lazarus no tenga un componente tipo TGridPanel

Última edición por AgustinOrtu fecha: 26-10-2015 a las 17:34:52.
Responder Con Cita