Criar componente em runtime
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.
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
Curtidas 0
Respostas
Facc
18/12/2007
ninguem?
GOSTEI 0
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
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
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
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
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.
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