I think I have solved this problem for MSWindows but it needs more testing. This allows BiDiMode to control the Hint.
In the file ..\Lcl\Include\HintWindow.inc
constructor THintWindow.Create(AOwner: TComponent);
begin
// THintWindow has no resource => must be constructed using CreateNew
inherited CreateNew(AOwner, 1);
fCompStyle := csHintWindow;
Parent := nil;
Color := clInfoBk;
Canvas.Font := Screen.HintFont;
Canvas.Brush.Style := bsClear;
FAlignment := taLeftJustify;
BorderStyle := bsNone;
Caption := 'THintWindow';
with GetControlClassDefaultSize do
SetInitialBounds(0, 0, CX, CY);
FHideInterval := 3000;
FAutoHide := False;
FAutoHideTimer := TCustomTimer.Create(self);
FAutoHideTimer.Interval := HideInterval;
FAutoHideTimer.Enabled := False;
FAutoHideTimer.OnTimer := @AutoHideHint;
// Added by Avishai
//WS_EX_LAYOUTRTL = $400000;
//NoInheritLayout = $00100000;
{$IfDef Windows}
if BiDiMode<>bdLeftToRight then begin
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE)
or $400000 or $00100000);
end;
{$EndIf}
end;