Стандартный способ сделать это - использовать свойство Delphi BiDiMode
.Лучше всего сделать это так, чтобы VCL знал, что вы хотите справа налево.Вам также нужно изменить свойство BiDiMode
во всплывающем меню.
Теперь правильный способ сделать это - не изменять свойства отдельных компонентов.Делать это таким образом трудоемко и очень подвержено ошибкам.Установите Application.BiDiMode
где-нибудь в инициализации вашего приложения, и изменение будет распространяться на все ваши компоненты.
Например, вы можете внести изменения в файл .dpr вашего приложения:
Application.Initialize;
Application.MainFormOnTaskbar := True;
Application.BiDiMode := bdRightToLeft;
Application.CreateForm(TMainForm, MainForm);
Application.Run;
Youнеобходимо убедиться, что вы не изменили ни один компонент BiDiMode
или ParentBiDiMode
ни в одном файле .dfm.Если вы просто удалите эти строки из вашего файла .dfm, и это позволит настройке Application.BiDiMode
в одном приложении для управления всем.
Ваш подход к настройке GWL_EXSTYLE
проблематичен.VCL контролирует эту настройку, и если вам нужно ее изменить, это в TForm.OnShow
приведет к странным ошибкам.Иногда необходимо заново создать окна, и когда это произойдет, ваш код для установки GWL_EXSTYLE
не будет работать, и ваше древовидное представление вернется слева направо.Если вам нужно изменить стили окна, вам нужно переопределить TWinControl.CreateParams
для компонента.Однако в этом случае VCL имеет прямую поддержку BiDi, и это лучшее решение.