I encounter EInvalidIndex exceptions in TcxGridBandsViewInfo.GetHitTest, ProcessItems. Later up in the call stack there is TcxCustomGridController,MouseMove and eventually TApplication.ProcessMessages.
I've found out this is caused by someone calling Application.ProcessMessage while I'm populating a banded table view with Begin/EndUpdate. In so far this problem is related to B209536 and maybe Q260115 - the HitTesting uses a ViewInfo which is invalid during Begin/EndUpdate.
Unfortunately I cannot suppress that ProcessMessage call , since it is out of my control.
After finding Q471656 and Q370950 I see that TcxCustomGridController.GetCursor now checks GridView.CanGetHitTest before actually working the ViewInfo.
On the other hand I see that Tcx CustomGridController.MouseMove/Up/Down all use ViewInfo.GetHitTest *without* checking GridView.CanGetHitTest?!
Please consider a fix for this similar to the one of Q471656!
An AV occasionally occurs when calling Application.ProcessMessages within the View's BeginUpdate/EndUpdate block
Answers approved by DevExpress Support
We have fixed the issue described in this ticket and will include the fix in our next maintenance update. To apply this solution before the official update, request a hotfix by clicking the corresponding link for product versions you require.
Note: Hotfixes may be unavailable for beta versions and updates that are about to be released.
Hello,
Thank you for your research. You are right, Controller's mouse methods do not use CanGetHitTest. However, to be sure that this can cause errors, it will be good to reproduce the problem using a demo. Would you please provide us with a small sample project demonstrating the error? I believe that the reproducible scenario will help our developers fix the problem. Thanks in advance.
I had hoped referring to two already reported issues would save me the effort of creating a test case.
Please find it attached. Click the button "Start lengthy update" on the bottom right, then move the mouse over the grid next to the button. You'll see an EInvalidIndex.
Thank you very much for your demo. I have forwarded this ticket to our developers for research.