uses
Windows...
procedure SetWinControlBiDi(Control: TWinControl; RTL:Boolean=True);
const
WSEXRight=WS_EX_RTLREADING or {WS_EX_RIGHT or} WS_EX_LAYOUTRTL or WS_EX_NOINHERITLAYOUT;
WSEXLeft=WS_EX_LEFT or WS_EX_NOINHERITLAYOUT;
var
ExStyle: Longint;
begin
ExStyle := GetWindowLong(Control.Handle, GWL_EXSTYLE);
if RTL then
ExStyle := ExStyle and not (WSEXLeft or WS_EX_RIGHT) or WSEXRight
else
ExStyle := ExStyle and not WSEXRight or WSEXLeft;
SetWindowLong(Control.Handle, GWL_EXSTYLE, ExStyle);
Control.Invalidate;
end;