I have noticed that using an ellipsis column and a button column have different behaviours when calling a ColorDialog to change the colour of the cell the ellipsis/button is in.
The cbsButton can call the DrawCell event and change the colour immediately the ColorDialog closes.
The cbsEllipsis can only call the DrawCell event when focus moves to another cell.
Is there an easy way to get an immediate result with cbsEllipsis without changing cell?
As far as I understood the problem:
It works fine, what you may not have noticed is that cbsEllipsis it's a compound editor that consists in a StringEditor and a ButtonEditor, as the StringEditor occupy most part of the cell and the button the rest the whole cell is covered. As a test set the grid.color to say clAqua and you will see the StringEditor surface.
On the why in your code the column do no change color, it may be because the condition in ButtonClick specify if (aCol = 0) and ColorDialog1.Execute then, as this is "by column" editor, either is at column 0 or not, if you change the condition to if ColorDialog1.Execute then, it will work (but notice the cell that have the editor, the cbsEllipsis column) will be covered by the editor, so if you move it to another column it will be painted with the background color.