Destruir vários objetos criados em tempo de execução
Boa tarde!
Eu crio vários memos em tempo de execução, colocando o código abaixo em um looping:
Porém quando vou destruir, só consigo destruir 1, coloquei o código abaixo:
Depurando ele passa várias vezes(a qtd de memos) no FreeAndNil, mas não destroi, só destroi o primeiro.
Sou iniciante, o que estou fazendo de errado?
Obrigado!
Eu crio vários memos em tempo de execução, colocando o código abaixo em um looping:
memo := TMemo.Create(frmIncAlt); memo.Parent := self; memo.Width := 400; memo.Top := posicaomm; posicaomm :=posicaomm + 95; memo.Left := 640; memo.Clear;
Porém quando vou destruir, só consigo destruir 1, coloquei o código abaixo:
for i := 1 to cont do //cont é quantos memos eu tenho no form FreeAndNil(memo);
Depurando ele passa várias vezes(a qtd de memos) no FreeAndNil, mas não destroi, só destroi o primeiro.
Sou iniciante, o que estou fazendo de errado?
Obrigado!
Raphael
Curtidas 0
Melhor post
Raphael
21/08/2019
Consegui dessa maneira:
Resolvido!
for cont := frmIncAlt.ComponentCount-1 downto 0 do if copy(frmIncAlt.Components[cont].Name,1,9) = 'mmIntera_' then frmIncAlt.Components[cont].Free;
Resolvido!
GOSTEI 1
Mais Respostas
Fernando Ito
21/08/2019
Falae Raphael,
Só para constar, você poderia fazer desta outra forma também:
for cont:= Pred(frmIncAlt.ComponentCount) downto 0 do
begin
if (frmIncAlt.Components[cont] is TMemo) then // Se houvesse outros componentes em tela
begin
TMemo(frmIncAlt.Components[cont]).Destroy;
end;
end;
Um Abraço,
ITO
Só para constar, você poderia fazer desta outra forma também:
for cont:= Pred(frmIncAlt.ComponentCount) downto 0 do
begin
if (frmIncAlt.Components[cont] is TMemo) then // Se houvesse outros componentes em tela
begin
TMemo(frmIncAlt.Components[cont]).Destroy;
end;
end;
Um Abraço,
ITO
GOSTEI 1
Raphael
21/08/2019
Valeu obrigado! Vou tentar, mas...o que faz o PRED ?
GOSTEI 0
Fernando Ito
21/08/2019
Valeu obrigado! Vou tentar, mas...o que faz o PRED ?
É uma forma mais elegante de se fazer o "-1" rsrs
GOSTEI 1