Destruir vários objetos criados em tempo de execução

Delphi

21/08/2019

Boa tarde!

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

Raphael

Curtidas 0

Melhor post

Raphael

Raphael

21/08/2019

Consegui dessa maneira:

  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

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

GOSTEI 1
Raphael

Raphael

21/08/2019

Valeu obrigado! Vou tentar, mas...o que faz o PRED ?
GOSTEI 0
Fernando Ito

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
POSTAR