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

21/08/2019

0

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

Responder

Post mais votado

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!

Raphael

Raphael
Responder

Mais Posts

22/08/2019

Fernando Ito

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

Responder

22/08/2019

Raphael

Valeu obrigado! Vou tentar, mas...o que faz o PRED ?
Responder

22/08/2019

Fernando Ito

Valeu obrigado! Vou tentar, mas...o que faz o PRED ?



É uma forma mais elegante de se fazer o "-1" rsrs
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar