Criar componente em runtime

Delphi

18/12/2007

bom dia a todos

gostaria de saber se é possivel eu criar um componente em runtime e usar na unit inteira sem ter que criar novamente.

No meu caso tenho uma TREAD que faz conexão com Servidor FTP e realiza o download, mas pra isso eu coloquei essa tread ´ligada´ a um form onde coloquei o IdFTP para que eu possa usar na unit inteira.


Facc

Facc

Curtidas 0

Respostas

Facc

Facc

18/12/2007

ninguem?


GOSTEI 0
Massuda

Massuda

18/12/2007

Se o TIdFTP vai ser usado apenas pela thread, crie ele dentro da thread, no TThread.Execute, não em um form. Aliás, a thread só pode interagir com o form de modo sincrono/sincronizado através do método TThread.Synchronize.


GOSTEI 0
Facc

Facc

18/12/2007

Se o TIdFTP vai ser usado apenas pela thread, crie ele dentro da thread, no TThread.Execute, não em um form. Aliás, a thread só pode interagir com o form de modo sincrono/sincronizado através do método TThread.Synchronize.


mas é isso que eu quero... como faço pra criar o componente e ser usado na tread inteira?
Ela está dividida em várias partes, uma pra conectar, verificar a versão e a outra pra download


GOSTEI 0
Massuda

Massuda

18/12/2007

Declare o TIdFTP na classe da sua thread (pode ser na parte private); crie o TIdFTP no início do TThread.Execute e destrua ele no final do TThread.Execute OU, se precisar do TIdFTP antes/depois da thread executar, crie o TIdFTP em TThread.Create e destrua ele no TThread.Destroy.


GOSTEI 0
Facc

Facc

18/12/2007

Declare o TIdFTP na classe da sua thread (pode ser na parte private); crie o TIdFTP no início do TThread.Execute e destrua ele no final do TThread.Execute OU, se precisar do TIdFTP antes/depois da thread executar, crie o TIdFTP em TThread.Create e destrua ele no TThread.Destroy.


To tentando fazer isso que vc me passou, mas qndo eu coloco
procedure Thread.Create;
var
  IdFTP: TIdFTP;
begin
  IdFTP := TIdFTP.Create(Self);
end;


dá erro de tipos incompativeis Thread e Componente...

Voce poderia me dar apenas como e onde eu posso declarar? Sou novato com esse de negocio de Thread


GOSTEI 0
Massuda

Massuda

18/12/2007

Não passe Self no TIdFTP.Create, passe nil.

Esse parametro desse construtor serve para identificar quem irá destruir o componente. No caso, vai ser você mesmo, não algum form ou coisa parecida.


GOSTEI 0
POSTAR