Cita:
|
Empezado por JerS
Código Delphi [-] for I:=0 to Panel1.ControlCount -1 do
If Panel1.Controls[i].Name<>'' then
Panel1.Controls[i].Free;
|
Este código tiene un problema conceptual, cuando creas un ciclo con un for, el código que inicia los contadores y los valores máximos, en este caso Panel1.ControlCount, se ejecuta una sola vez cuando inicia la iteración y se guarda en un registro, después no se ejecuta nunca mas!!.. como ControlCount va a ir cambiando cuando elimines controles, cada vez va a ser menos, en algún momento vas a llamar a un control que no pertenece al vector.
La solución mas sencilla es hacer el for decremental:
Cita:
|
Empezado por JerS
for i := Panel1.ControlCount -1 downto 0 do
...[/delphi]
|
Saludos!