|
ActiveDelphi .: O site do programador Delphi! :.
|
Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
wolverinefarah Colaborador
Registrado: Sábado, 17 de Junho de 2006 Mensagens: 1770
|
Enviada: Sex Fev 17, 2017 8:29 am Assunto: Threads [RESOLVIDO] |
|
|
Bom dia.
Gostaria de saber o que posso estar fazendo errado. Tenho uma thread anonma executando, blz, funciona, porem, quando vou passar o resultado para os controles, stringgrid e edit. O mesmo n atualizar, fica todo falhado, ja usei o ProcessMessage, repaint, porem o erro persiste, alguem sabe o que pode ser?
valeu! _________________ Fernando Farah
PROGRAMADOR PROGRESS
PROGRAMADOR DELPHI + FIREBIRD
Editado pela última vez por wolverinefarah em Ter Fev 21, 2017 9:48 am, num total de 1 vez |
|
Voltar ao Topo |
|
|
leo_cj Colaborador
Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Sex Fev 17, 2017 8:50 am Assunto: |
|
|
Bom dia,
o método para atualizar a tela está na thread?
se sim, você precisa utilizar o método Synchronize
ex:
Código: | procedure TfrmPrincipal.ApagarLogAntigoComThread;
begin
TThread.CreateAnonymousThread(
procedure()
var
SearchRec : TSearchRec;
i : integer;
sDir : string;
begin
sDir := ExtractFileDir(ParamStr(0));
i := FindFirst(sDir + '\*.log',0,SearchRec);
while i = 0 do
begin
if StrToInt(Copy(SearchRec.Name,1,4)) < (strtoint(FormatDateTime('yyyy',Now)) - 1) then
deleteFile(sDir + '\' +SearchRec.Name);
i := FindNext(searchRec);
end;
//atualizar componente vcl
TThread.Synchronize(TThread.CurrentThread,
procedure
begin
frmPrincipal.stbRodape.SimpleText := 'Arquivos de log antigos deletados com sucesso';
end
);
end
).Start;
end; |
retirei o exemplo desse link:
https://drgarcia1986.wordpress.com/2013/02/13/threads-no-delphi-por-onde-comecar-parte-iv/ |
|
Voltar ao Topo |
|
|
wolverinefarah Colaborador
Registrado: Sábado, 17 de Junho de 2006 Mensagens: 1770
|
Enviada: Dom Fev 19, 2017 2:23 pm Assunto: |
|
|
leo_cj escreveu: | Bom dia,
o método para atualizar a tela está na thread?
se sim, você precisa utilizar o método Synchronize
ex:
Código: | procedure TfrmPrincipal.ApagarLogAntigoComThread;
begin
TThread.CreateAnonymousThread(
procedure()
var
SearchRec : TSearchRec;
i : integer;
sDir : string;
begin
sDir := ExtractFileDir(ParamStr(0));
i := FindFirst(sDir + '\*.log',0,SearchRec);
while i = 0 do
begin
if StrToInt(Copy(SearchRec.Name,1,4)) < (strtoint(FormatDateTime('yyyy',Now)) - 1) then
deleteFile(sDir + '\' +SearchRec.Name);
i := FindNext(searchRec);
end;
//atualizar componente vcl
TThread.Synchronize(TThread.CurrentThread,
procedure
begin
frmPrincipal.stbRodape.SimpleText := 'Arquivos de log antigos deletados com sucesso';
end
);
end
).Start;
end; |
retirei o exemplo desse link:
https://drgarcia1986.wordpress.com/2013/02/13/threads-no-delphi-por-onde-comecar-parte-iv/ |
Valeu leo_cj, funcionou.. Tinha tentado isso mas estava fazendo de forma equivocada.
Valeu! _________________ Fernando Farah
PROGRAMADOR PROGRESS
PROGRAMADOR DELPHI + FIREBIRD |
|
Voltar ao Topo |
|
|
leo_cj Colaborador
Registrado: Sábado, 26 de Março de 2011 Mensagens: 1335
|
Enviada: Seg Fev 20, 2017 8:48 am Assunto: |
|
|
Opa, por nada, que bom que funcionou |
|
Voltar ao Topo |
|
|
|
|
Enviar Mensagens Novas: Proibido. Responder Tópicos Proibido Editar Mensagens: Proibido. Excluir Mensagens: Proibido. Votar em Enquetes: Proibido.
|
|