アプリケーションへの双方向言語機能の追加

提供: RAD Studio
移動先: 案内検索

アプリケーション コードの多国語対応 への移動


言語の中には、西洋言語に共通の左から右への読み取り順ではなく、語句は右から左に向かって読み、数字は左から右に向かって読む言語があります。この区別から、これらの言語は双方向(BiDi)言語といわれます。最も一般的な双方向言語はアラビア語やヘブライ語ですが、他の中東言語も双方向言語です。

VCL では、BiDiMode プロパティと ParentBiDiMode プロパティで双方向言語のローカライズをサポートしています。TApplication には、BiDiKeyboard および NonBiDiKeyboard という 2 つのプロパティがあり、これを使ってキーボード レイアウトを指定することができます。


BiDi をサポートする VCL オブジェクト

[Standard] [Additional] [Win32] [Data Controls] [QReport] その他のクラス
  • TButton
  • TCheckBox
  • TComboBox
  • TEdit
  • TGroupBox
  • TLabel
  • TListBox
  • TMainMenu
  • TMemo
  • TPanel
  • TPopupMenu
  • TRadioButton
  • TRadioGroup
  • TScrollBar
  • TActionMainMenuBar
  • TActionToolBar
  • TBitBtn
  • TCheckListBox
  • TColorBox
  • TDrawGrid
  • TLabeledEdit
  • TMaskEdit
  • TScrollBox
  • TSpeedButton
  • TStaticLabel
  • TStaticText
  • TStringGrid
  • TValueListEditor
  • TComboBoxEx
  • TDateTimePicker
  • THeaderControl
  • THotKey
  • TListView
  • TMonthCalendar
  • TPageControl
  • TRichEdit
  • TStatusBar
  • TTabControl
  • TTreeView
  • TDBCheckBox
  • TDBComboBox
  • TDBEdit
  • TDBGrid
  • TDBListBox
  • TDBLookupComboBox
  • TDBLookupListBox
  • TDBMemo
  • TDBRadioGroup
  • TDBRichEdit
  • TDBText
  • TQRDBText
  • TQRExpr
  • TQRLabel
  • TQRMemo
  • TQRPreview
  • TQRSysData
  • TApplication(ParentBiDiMode なし)
  • TBoundLabel
  • TControl(ParentBiDiMode なし)
  • TCustomHeaderControl(ParentBiDiMode なし)
  • TForm
  • TFrame
  • THeaderSection
  • THintWindow(ParentBiDiMode なし)
  • Menu
  • TStatusPanel

メモ: THintWindow は、ヒントを起動したコントロールの BiDiMode を使用します。

BiDiMode プロパティ

BiDiMode プロパティでは、テキストの読み取り順、垂直スクロール バーの位置、および位置揃えを変更するかどうかを制御します。Name などのテキスト プロパティを持つコントロールでは、[オブジェクト インスペクタ]BiDiMode プロパティが表示されます。

BiDiMode プロパティは、TBiDiMode 列挙型です。TBiDiMode には、bdLeftToRightbdRightToLeftbdRightToLeftNoAlignbdRightToLeftReadingOnly という 4 つの状態があります。

状態

説明

サンプル

bdLeftToRight

左から右の読み取り順でテキストを描画します。位置揃えおよびスクロール バーは変更されません。たとえば、アラビア語やヘブライ語などの右から左に記述するテキストを入力すると、カーソルがプッシュ モードになり、テキストは右から左に入力されます。英語やフランス語のようなラテン系言語のテキストは、左から右に入力されます。bdLeftToRight がデフォルト値です。

TListBox set to bdLeftToRight.jpg

bdRightToLeft

右から左の読み取り順でテキストを描画します。位置揃えが変更され、スクロール バーも移動します。アラビア語やヘブライ語などの右から左に記述する言語を標準として、テキストが入力されます。キーボードがラテン系言語に変更されると、カーソルがプッシュ モードになり、テキストが左から右に入力されます。

TListBox set to bdRightToLeft.jpg

bdRightToLeftNoAlign

右から左の読み取り順でテキストを描画します。位置揃えは変更されませんが、スクロール バーは移動します。

TListBox set to bdRightToLeftNoAlign.jpg

bdRightToLeftReadingOnly

右から左の読み取り順でテキストを描画します。位置揃えもスクロール バーも変更されません。

TListBox set to bdRightToLeftReadingOnly.jpg

ParentBiDiMode プロパティ

ParentBiDiMode は、論理型のプロパティです。True(デフォルト)の場合、コントロールは自身の親と同じ BiDiMode を使用します。コントロールが TForm オブジェクトの場合、フォームはアプリケーションの BiDiMode の設定を使用します。すべての ParentBiDiMode プロパティが True の場合にアプリケーションの BiDiMode プロパティを変更すると、プロジェクト内のすべてのフォームおよびコントロールが新しい設定で更新されます。

FlipChildren メソッド

FlipChildren メソッドを使用すると、コンテナ コントロールの子の位置を入れ替えることができます。コンテナ コントロールは、他のコントロールを含むことのできるコントロールです。コンテナ コントロールには TFormTPanelTGroupBox などがあります。FlipChildren は、論理型の 1 つのパラメータ AllLevels を受け取ります。AllLevelsFalse を指定すると、コンテナ コントロール直下の子だけが入れ替えられます。AllLevelsTrue を指定すると、コンテナ コントロール内のすべてのレベルの子が入れ替えられます。

Delphi では、Left プロパティとコントロールの位置揃えを変更することで、コントロールを入れ替えます。あるコントロールの左端が親コントロールの左端から 5 ピクセルの位置にあった場合、入れ替え後、その編集コントロールの右端が親コントロールの右端から 5 ピクセルの位置に配置されます。編集コントロールが左揃えになっているときに FlipChildren を呼び出すと、コントロールが右揃えになります。

設計時にコントロールを入れ替えるには、[編集|左右入れ換え]をクリックし、すべてのコントロールを入れ替えたいか、選択したコントロールの子だけを入れ替えたいかの状況に応じて、[すべて]または[選択部分を入れ替え]を選択します。フォーム上でコンテナ コントロールを選択して右クリックし、コンテキスト メニューから[左右入れ替え]を選択しても、コンテナ コントロール内のコントロールを入れ替えることができます。

メモ: 編集コントロールを選択して[左右入れ替え|選択部分を入れ替え]を実行しても、何も変更されません。編集コントロールはコンテナではないためです。

双方向言語機能に便利なその他のメソッド

双方向言語ユーザー向けのアプリケーションを開発するのに便利なその他のメソッドを以下に示します。

BiDi をサポートする VCL メソッド:

メソッド 説明

OkToChangeFieldAlignment

データベース コントロールと共に使用します。コントロールの位置揃えが変更できるかどうかを確認します。

DBUseRightToLeftAlignment

位置揃え確認用のデータベース コントロールのラッパーです。

ChangeBiDiModeAlignment

渡された Alignment パラメータを変更します。BiDiMode 設定の確認は行いません。左揃えと右揃えを入れ替えるだけです。

IsRightToLeft

右から左のいずれかのオプションが選択されている場合に True を返します。False を返した場合には、コントロールは左から右のモードになっています。

UseRightToLeftReading

コントロールが右から左に読み取りを行う場合に True を返します。

UseRightToLeftAlignment

コントロールが右から左の位置揃えを行う場合に True を返します。オーバーライドしてカスタマイズできます。

UseRightToLeftScrollBar

コントロールが左スクロール バーを使用している場合に True を返します。

DrawTextBiDiModeFlags

コントロールの BiDiMode の正確なテキスト描画フラグを返します。

DrawTextBiDiModeFlagsReadingOnly

UseRightToLeftReading メソッドの戻り値に応じて、DT_RTLREADING フラグか 0 を返します。

AddBiDiModeExStyle

適切な ExStyle フラグを作成中のコントロールに追加します。

関連項目