Version: 8.1.3.0
Problem: if the Focus changes from the underlying grid to something else and the InplaceEditor is open, the text in the cell will be set to an empty string, effectivly deleting the entry.
This is especially problematic with data aware grids.
I've looked through the Code and identified the Problem:
In the WMKillFocus method of TAdvInplaceEdit there is a case if the new Focus is different from the Grid (msg.FocusedWnd <> FGrid.Handle). In this case the variable Text is defined as FGrid.CurrentCell
This can't work under those circumstances, as CurrentCell in the end refers to the VCL-property Cells, which in it's getter tries to create a TStringSparseList object which expects a Row number. I suspect without the Focus, the row number can't be determined. In any case the StringSparseList will be Nil and thus Cells returns an empty string.
So, FGrid.CurrentCell can't be used to get the cell text - but the more pressing question is: why is Text even set in this case?
If I understand it correctly what this would do (if it would work) is to discard the changes the user may have made. But why?
I have deleted this line which fixes the outlined problem. I have also not discovered any negative side effects, though I've not conducted an exhaustive test.
Has this been fixed in a newer Version?