Hallo,
die (interne) Reihenfolge der Columns ändert sich nicht.
Die aktuelle Position des Columns bekommst Du mit der Property
Position
Delphi-Quellcode:
with vst.header do
for x := 0 to Columns.Count -1 do
ShowMessage(Columns[Columns[x].Position].Text);