FireMonkey のネイティブ Windows コントロール

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

FireMonkey のネイティブ コントロール への移動


このトピックでは、FireMonkey のネイティブ Windows コントロールについて説明します。

FireMonkey のネイティブ Windows コントロールの表示

FireMonkey では、特定のビジュアル コンポーネントのネイティブ表示が可能です。

  • コントロールを標準の FireMonkey 表示にするには、ControlType プロパティを Styled に設定します。StyledControlType のデフォルト値です。
  • ControlType プロパティを Platform に設定すると、そのコントロールをネイティブ スタイルで表示できます。

使用可能な FireMonkey ネイティブ Windows コントロール

ネイティブ表示をサポートしているコントロールは次のとおりです。

ネイティブ Windows コントロールの外見の変化

ビジュアル コンポーネントの ControlType プロパティを Platform に設定した場合、フォーム デザイナでのこのコントロールの表示は、ネイティブ コントロールであることを示すように変わり、スマートフォンのような小さいアイコンが右下隅に表示されます。 ControlType プロパティを StyledPlatform に設定した場合の設計時および実行時のネイティブ Windows コントロールの外見を次の図に示します。

コントロール 設計時 実行時
Styled Platform Styled Platform

TEdit

TEditStyled DT win.png

TEditPlatform DT win.png

TEditStyled RT win.png

TEditPlatform RT win.png

TMemo

TMemo Styled DT win.png

TMemo Platform DT win.png

TMemo Styled RT win.png

TMemo Platform RT win.png

TPresentedScrollBox

TPresentedScrollBox Styled DT.png

TPresentedScrollBox Platform DT.png

TPresentedScrollBox Styled RT win.png

TPresentedScrollBox Platform RT win.png

アプリケーションへのネイティブ Windows コントロールの追加

アプリケーションにネイティブ Windows コントロールを追加するには:

  1. ネイティブ表示をサポートしているコンポーネントをフォームにドロップします(サポートされているコントロールのリストを参照)。
  2. [オブジェクト インスペクタ][プロパティ]タブで、ControlType プロパティを Platform に設定します。設計時のコンポーネントの表示が変わります(「ネイティブ Windows コントロールの外見の変化」を参照)。
  3. アプリケーションを実行します。

あるいは、実行時に ControlType の値を変更してもかまいません。TEdit コントロールのネイティブ表示を選択するには、アプリケーションに以下のコードを追加します。

Delphi の場合:
Edit1.ControlType := TPresentedControl.TControlType.Platform;
C++ の場合:
Edit1->ControlType = TPresentedControl::TControlType::Platform;

ネイティブ Windows コントロールと非ネイティブ コントロールの組み合わせ

非ネイティブ コントロールとネイティブ コントロールを組み合わせることはお勧めしません。ネイティブ コントロールではフォームの Z 順序をサポートしておらず、ネイティブ コントロールはフォーム上で常に他のコントロールの上に表示されるからです。ただし、一部の非ネイティブ コントロールでは、ネイティブ コントロールの Z 順序をサポートするため、ネイティブ コントロールと組み合わせることができます。

ControlType プロパティを持っているためネイティブ コントロールと組み合わせることができるコントロールは次のとおりです。

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)」を参照してください。

上記の機能はコントロールのコンテキスト メニューに含まれます。そのため、メモ コントロールや編集コントロールのコンテキスト メニューは StyledPlatform とは異なります。

コントロール コンテキスト メニュー(Styled の場合) コンテキスト メニュー(Platform の場合)

TMemo

TMemo ContextMenu Styled RT win.png

TMemo ContextMenu Platform RT win.png

TEdit

TEdit ContextMenu Styled RT win.png

TEdit ContextMenu Platform RT win.png

ネイティブ Windows コントロールの制限事項

ネイティブ コントロールを使用する場合は、その前に、次の制限事項を考慮してください。

  • ネイティブ コントロールは、定義済みスタイルやカスタム スタイルをサポートしていません。ネイティブ コントロールの ControlType プロパティが Platform に設定されている場合、StyleLookup プロパティの値は無視されます。
  • ネイティブ コントロールは透明な背景のサポートを制限します。透明コントロールは正しく描画されません。
  • ネイティブ コントロールは、フォームの Z 順序をサポートしておらず、フォーム上にある他の FireMonkey コントロールの常に上に表示されます。詳細は、「ネイティブ Windows コントロールと非ネイティブ コントロールの組み合わせ」を参照してください。
  • 次のイベント ハンドラはサポートされておらず、実装することができません。
  • 次のイベントは発生しますが、(コントロールのビジュアライゼーションをオーバーライドするため)意図された使用ができません。ただし、システムがコントロールを再描画したことを示す情報として使用することができます。

いくつかのコントロール固有の制限もあります。

TMemo

次のイベントはサポートされておらず、TMemo に実装することはできません。

TMemo と TEdit

OnKeyXX イベント ハンドラでのパラメータ値の設定は、キー入力を抑止しません。 たとえば、OnKeyDown イベント ハンドラで KeyChar := #0; を設定し、s キーを押す場合、スタイル付き表示が何も出力しない間、ネイティブ表示はまだ s を出力します。

上記の制限は次のイベント ハンドラに適用されます。

次のイベントはサポートされておらず、TMemoTEdit に実装することはできません。

  • OnValidate
メモ: OnValidating イベントは、FireMonkey および TMemoTEdit のネイティブ表示の両方で発生します。

関連項目