merdashka, Ладно, до завтра подожду))
Но есть такие проблемы:
в Событии ColumnMoved бестолку что-либо менять. Ни один из вариантов не работает.
Во-вторых Способ DbGrid1.Columns.Items[0].FieldName:='Имя_Поля1'; тоже не подходит т.к. меняться тока имя поле а не поле.
И все же самый легкий способ найти какую-нибудь скрытую свойству типа NoMoveColumns..

Ну или найти способ в событии OnColumnMoved завершать это событие ничего не делая дальше, так как по-моему сначала вызываеться это событие, а потом тока меняться местами столбцы.