Refresh:
calls Repaint // not needed
called by the end user to refresh the area of a control usually when there are property changes that do not refresh the control.
Repaint:
If csOpaque Then direct redraw
Else calls Invalidate and Update
As far as I remember from delphi repaint will handle all messages that have to do with painting invalidate, paint etc at the time it will be called. I used it to show progress updates on screen with out calling processmessages.
Invalidate:
InvalidateRect
wich part is visible? // can be used more than once, can reduce flicker
The invalidated areas accumulate in the update region until the region is processed when the next WM_PAINT message occurs or until the region is validated by using the ValidateRect or ValidateRgn function.
source
https://msdn.microsoft.com/en-us/library/windows/desktop/dd145002(v=vs.85).aspxIn short it does not matter how ofter you call invalidaterect it will accumulate the rect in to single region which will be passed to the next paint method. Used to speed things up.
Update:
UpdateWindow // no Invalidate, no waiting for WM_Paint, faster
never used it my self.
In short as a component writer I use invalidate/invalidaterect as an end user I use repaint.
Now in lcl things are a bit out of spec for example repaint does not handle the paint messages at all as a result it does not update the screen at all.