This is a jolly good idea.
In fact the problem is the conflict between 2 modal forms: MessageDlg vs VLOC_OpenDialog.
In your code, there is a creation of a modal form by a modal form.
It could be that in some case, the modal-MessageDlg-form is not yet completely freed before creating/show modal-VLOC_OpenDialog-form.
(Your code show one of this case but I did not understand what it is, in my simple test code it works)
To resume better give time to the system to completely finish his work.
My 0.001 cent, of course.