I understand. I've got the same kind of problem with TCanvas.
There are three solutions :
- to create your own class by copy'n'paste the existing ones (I suppose it's not a good idea)
- to override paint event and add some improvements here, for example using another list of columns that you make up-to-date with the previous one. Using both list of columns, you can add in the new ones the information you need (it's a trick that may work)
- to free the created columns and replace with others (likely to be impossible because columns are used in the code you cannot change)
- ask for a change in TCustomGrid, that a virtual procedure be added that creates columns. Then you would just have to override it in you class (the most elegant way but you may need to wait before your change is accepted and embedded in a new version of Lazarus)