Fórum Destruir vários objetos criados em tempo de execução #604751
21/08/2019
0
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
Curtir tópico
+ 0Post mais votado
21/08/2019
for cont := frmIncAlt.ComponentCount-1 downto 0 do
if copy(frmIncAlt.Components[cont].Name,1,9) = 'mmIntera_' then
frmIncAlt.Components[cont].Free;
Resolvido!
Raphael
Gostei + 1
Mais Posts
22/08/2019
Fernando 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
22/08/2019
Raphael
Gostei + 0
22/08/2019
Fernando Ito
É uma forma mais elegante de se fazer o "-1" rsrs
Gostei + 1
Clique aqui para fazer login e interagir na Comunidade :)