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:
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
Curtir tópico
+ 0
Responder
Post mais votado
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!
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
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
Fernando Ito
Valeu obrigado! Vou tentar, mas...o que faz o PRED ?
É uma forma mais elegante de se fazer o "-1" rsrs
Responder
Clique aqui para fazer login e interagir na Comunidade :)