Alex:
The grid control in VFP is one of the most problematic control. But after you know all the problem you can easy handle all of them. First you need to declare your recordsource before define the column. if in any moment you change the record source you column definition will be lost and you will get the column in the same sequence of your table.
What we do is asign 0 as a record source in any chance that you need to rebuild your table or use a view instead of a table and issue a requery(). The second one work better for me.