Miguel,
I'm not sure I completely understand what's going on, particularly the how. I do have a suggestion that may help. I'm guessing that the root of this problem is modifications made to the treeview nodes during execution. I'm wondering if something like the following will help in this instance. IAC, it does help in those instances where a treeview is cleared and then re-built to keep the display from jumping.
DECLARE INTEGER LockWindowUpdate IN Win32API;
INTEGER hWnd
= LockWindowUpdate(ThisForm.Treeview.hWnd)
= LockWindowUpdate(0)
George
Ubi caritas et amor, deus ibi est