FireMonkey のネイティブ Windows コントロール
このトピックでは、FireMonkey のネイティブ Windows コントロールについて説明します。
目次
FireMonkey のネイティブ Windows コントロールの表示
FireMonkey では、特定のビジュアル コンポーネントのネイティブ表示が可能です。
- コントロールを標準の FireMonkey 表示にするには、ControlType プロパティを
Styled
に設定します。Styled
は ControlType のデフォルト値です。 - ControlType プロパティを
Platform
に設定すると、そのコントロールをネイティブ スタイルで表示できます。
使用可能な FireMonkey ネイティブ Windows コントロール
ネイティブ表示をサポートしているコントロールは次のとおりです。
- TEdit
- TMemo
- TPresentedScrollBox
- TPresentedVertScrollBox
- TPresentedHorzScrollBox
- TPresentedFramedScrollBox
- TPresentedFramedVertScrollBox
ネイティブ Windows コントロールの外見の変化
ビジュアル コンポーネントの ControlType プロパティを Platform
に設定した場合、フォーム デザイナでのこのコントロールの表示は、ネイティブ コントロールであることを示すように変わり、スマートフォンのような小さいアイコンが右下隅に表示されます。
ControlType プロパティを Styled
と Platform
に設定した場合の設計時および実行時のネイティブ Windows コントロールの外見を次の図に示します。
コントロール | 設計時 | 実行時 | ||
---|---|---|---|---|
Styled
|
Platform
|
Styled
|
Platform
| |
アプリケーションへのネイティブ Windows コントロールの追加
アプリケーションにネイティブ Windows コントロールを追加するには:
- ネイティブ表示をサポートしているコンポーネントをフォームにドロップします(サポートされているコントロールのリストを参照)。
- [オブジェクト インスペクタ]の[プロパティ]タブで、ControlType プロパティを
Platform
に設定します。設計時のコンポーネントの表示が変わります(「ネイティブ Windows コントロールの外見の変化」を参照)。 - アプリケーションを実行します。
あるいは、実行時に ControlType の値を変更してもかまいません。TEdit コントロールのネイティブ表示を選択するには、アプリケーションに以下のコードを追加します。
Edit1.ControlType := TPresentedControl.TControlType.Platform;
Edit1->ControlType = TPresentedControl::TControlType::Platform;
ネイティブ Windows コントロールと非ネイティブ コントロールの組み合わせ
非ネイティブ コントロールとネイティブ コントロールを組み合わせることはお勧めしません。ネイティブ コントロールではフォームの Z 順序をサポートしておらず、ネイティブ コントロールはフォーム上で常に他のコントロールの上に表示されるからです。ただし、一部の非ネイティブ コントロールでは、ネイティブ コントロールの Z 順序をサポートするため、ネイティブ コントロールと組み合わせることができます。
ControlType プロパティを持っているためネイティブ コントロールと組み合わせることができるコントロールは次のとおりです。
- TMultiView
- TButton
- TSpeedButton
- TColorButton
- TCornerButton
- TPopupBox
- TMagnifierGlass
- TPanel
- TLabel
- TCheckBox
- TRadioButton
- TGroupBox
- TStatusBar
- TToolBar
- TProgressBar
- TTrackBar
- TListView
ControlType プロパティを持っていないがネイティブ コントロールと組み合わせることもできるコントロールは次のとおりです。
ネイティブ Windows コントロールの利点
コントロールの中には、ネイティブ コントロールとして使用した場合に追加機能をサポートするものがあります。
TMemo と TEdit
- その他のコンテキスト メニュー項目:
- 元に戻す: 直前の操作を元に戻します。
- 右から左に読む: コントロールの右側のテキストの読み取り順および揃え方を変更します。詳細は、https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/lang_right_to_left.mspx で公開されている Microsoft のドキュメント「To set right-to-left reading order」(右から左への読み取り順序を設定する)を参照してください。
- Unicode 制御文字の表示: Unicode 制御文字はアラビア語やヘブライ語などの言語でのテキストの読み込み順を設定するときに役に立つタグです。詳細は、https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/lang_show_unicode.mspx で公開されている Microsoft のドキュメント「To show Unicode control characters」(Unicode 制御文字を表示する)を参照してください。
- Unicode 制御文字の挿入: Unicode 制御文字はアラビア語やヘブライ語などの言語でのテキストの読み込み順を設定するときに役に立つタグです。詳細は、https://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/lang_insert_unicode.mspx で公開されている Microsoft のドキュメント「To insert a Unicode control character」(Unicode 制御文字を挿入する)を参照してください。
- IME を開く: IME は
Microsoft Global Input Method Editor
を表します。Windows の他のバージョンでサポートしているアプリケーションへの日本語、中国語、韓国語の入力を可能にします。詳細は、「Microsoft Global IME (Input Method Editor)」を参照してください。
上記の機能はコントロールのコンテキスト メニューに含まれます。そのため、メモ コントロールや編集コントロールのコンテキスト メニューは Styled
や Platform
とは異なります。
コントロール | コンテキスト メニュー(Styled の場合)
|
コンテキスト メニュー(Platform の場合)
|
---|---|---|
ネイティブ Windows コントロールの制限事項
ネイティブ コントロールを使用する場合は、その前に、次の制限事項を考慮してください。
- ネイティブ コントロールは、定義済みスタイルやカスタム スタイルをサポートしていません。ネイティブ コントロールの ControlType プロパティが
Platform
に設定されている場合、StyleLookup プロパティの値は無視されます。 - ネイティブ コントロールは透明な背景のサポートを制限します。透明コントロールは正しく描画されません。
- ネイティブ コントロールは、フォームの Z 順序をサポートしておらず、フォーム上にある他の FireMonkey コントロールの常に上に表示されます。詳細は、「ネイティブ Windows コントロールと非ネイティブ コントロールの組み合わせ」を参照してください。
- 次のイベント ハンドラはサポートされておらず、実装することができません。
- 次のイベントは発生しますが、(コントロールのビジュアライゼーションをオーバーライドするため)意図された使用ができません。ただし、システムがコントロールを再描画したことを示す情報として使用することができます。
いくつかのコントロール固有の制限もあります。
TMemo
次のイベントはサポートされておらず、TMemo に実装することはできません。
TMemo と TEdit
OnKeyXX
イベント ハンドラでのパラメータ値の設定は、キー入力を抑止しません。
たとえば、OnKeyDown イベント ハンドラで KeyChar := #0;
を設定し、s
キーを押す場合、スタイル付き表示が何も出力しない間、ネイティブ表示はまだ s
を出力します。
上記の制限は次のイベント ハンドラに適用されます。
次のイベントはサポートされておらず、TMemo や TEdit に実装することはできません。
OnValidate