I don't use CustomDrawn, so not sure if this is the correct way, but this appears to work
procedure MoveTab(t:TCDPageControl;from,too:integer);
begin
t.Tabs.Move(from,too);
if t.PageIndex=from then t.pageindex := too
else if t.pageindex=too then t.pageindex := from;
t.invalidate;
end;
And then if you want say TabPosition 1 moving to TabPostion 0,
MoveTab(cdpagecontrol1,1,0);
edit: oops, missed a bit.