>あとAbstractFactory(?)みたいなものを実装する時とか……
  ,,,,,,,,,,,,,,,,∧,,∧   / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
〜′,,,,,,,,,,ミ,,゚Д゚彡 < もう少し、具体的な例が聞きたい。
  UU"""" U U    \_______________

普通にvar でポインタの変更は出来るのでは?

procedure AAA(var Btn1, Btn2: TButton);
var
 Btn: TButton;
begin
 Btn := Btn1;
 Btn1 := Btn2;
 Btn2 := Btn;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 OutputDebugString(PChar(Button1.Caption));
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
 OutputDebugString(PChar(Button2.Caption));
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
 AAA(Button1, Button2);
end;