Você está na página 1de 2

12/06/2023, 14:30 delphi - Qual a diferença nos métodos Refresh, Update, Repaint, Invalidate e no Application.ProcessMessages?

- Stack Ov…

Qual a diferença nos métodos Refresh, Update, Repaint, Invalidate e


no Application.ProcessMessages?
Perguntada 8 anos, 7 meses atrás Modified 8 anos, 7 meses atrás Vista 6mil vezes

Qual a diferença entre os métodos:

1. Refresh, de TControl;
11
2. Update, de TControl;

3. Repaint, também deTControl; e,

4. Invalidate, também de TControl;

5. Além do Application.ProcessMessages?

delphi

Compartilhar Melhore esta pergunta Seguir perguntada 19/10/2014 às 23:38


user8052

Ordenado por:
1 Resposta
Maior pontuação (predefinição)

Invalidate
O método Invalidate só marca o componente para ser pintado na próxima vez que a
14 interface for atualizada. Ele não re-desenha o componente no momento que foi chamado.

Update
Método que re-deseha o componente imediatamente, desde que ele já tenha sido
invalidado, sem esperar pelo processamento das mensagens de re-desenhar pelo Windows.
Gera consumo de tempo de processador pois vais parar todas as atividades da thread
principal da aplicação para redesenhar.
Isto quer dizer que, se você tiver alterado algo que implique em mudança visual, e o
componente não tiver sido Invalidado, depois do update a alteração pode não ser
processsada.

Repaint
O repaint força o componente a se re-desenhar imediatamente. Se a propriedade
ControlStyle incluir csOpaque , o componente irá redesenhar-se, senão será executado o
método Invalidate e logo depois o método Update

https://pt.stackoverflow.com/questions/37413/qual-a-diferença-nos-métodos-refresh-update-repaint-invalidate-e-no-applicati 1/2
12/06/2023, 14:30 delphi - Qual a diferença nos métodos Refresh, Update, Repaint, Invalidate e no Application.ProcessMessages? - Stack Ov…

Refresh
Segundo a documentação o Refresh executa o Repaint , e portanto fazem exatamente a
mesa coisa, tanto que consta ainda que eles são intercambiáveis, isto é, tanto faz usar um ou
o outro

Application.ProcessMessages
Força a aplicação a processar as mensagem do Windows.

Quando a aplicação está realizando uma operação de alto custo de processamento, ou


realizando um loop, a thread fica ocupada realizando aquela operação e não realiza o
processamento de nenhuma mensagem do Windows para a aplicação, como um clique em
um componente, o pressionamento de uma tecla ou neste caso a atualização dos
componentes gráficos da aplicação.

Ser chamar o método Invalidate e logo depois Application.ProcessMessages , o windows


irá tratar da mensagem do Invalidate e providenciar o re-desenho da janela ou do
componente, juntamente com todas as demais mensagens.

Compartilhar Melhore esta resposta Seguir respondida 20/10/2014 às 11:23


Caputo
5.583 19 53

https://pt.stackoverflow.com/questions/37413/qual-a-diferença-nos-métodos-refresh-update-repaint-invalidate-e-no-applicati 2/2

Você também pode gostar