この記事は、 Marco Cantu氏によるblog記事「My 13 Top New FireMonkey Features in RAD Studio 13」の抄訳です。
RAD Studio 13、C++Builder 13、Delphi 13 のリリースから数ヶ月が経ちましたが、ランタイムライブラリの新機能についてブログであまり触れていませんでした。そこで、FireMonkey ライブラリをはじめとする様々な分野に焦点を当てたブログ記事をいくつか書くことにしました。
現在、多くの新機能が追加されています。非常に複雑なもの(いくつかは既に詳しく説明しています)もあれば、小さなものもあります。私の「トップ 13 機能」リストは、私が個人的に重要だと思う変更点を厳選したものです。タイトルからもわかるように、個人的なリストであるため、私が選んだもの以外にも、皆さんにとってより興味深い新機能があるかもしれません。また、このリストは新機能に重点を置いていますが、R&D チームは多くの問題や不整合にも対処し、プラットフォーム API の統合にも取り組んできました。
Table of Contents
FMX 1: 新しい ApplicationEvents コンポーネント
RAD Studio 13 では、新しい TApplicationEvents コンポーネントが導入されました。これにより、イベントハンドラーを手動で作成して接続する必要がなくなり、アプリケーション全体のイベント処理が大幅に容易になります。コンポーネントをデザインサーフェイス(非ビジュアルデザイナーでも)にドロップし、イベントハンドラーを追加するだけです。

概念はVCL版と似ていますが、実際のイベントは異なり、FMXアプリケーションのライフサイクルに依存していることに注意してください。上の図の例では、モバイルで一般的に使用されるOnOrientationChangedイベントを処理しています。
FMX 2: リストボックス項目の OnChangeCheck
ListBox コントロールの ListBoxItem に、新しい OnChangeCheck イベントが追加されました。以下に例を示します。

FMX 3: TComboEdit のオートコンプリート
TComboEdit コンポーネントは、VCL TComboBox と同様に、入力中のオートコンプリートをサポートするようになりました。入力すると、コントロールはリスト内で現在の入力内容に一致する最初の項目を提案します。この例では、コンボボックスには数値のリストがあり、「t」と入力すると「two」が提案されます。

FMX 4: トラックバーの反転
TTrackBar コントロールには Reverse プロパティがあり、これを使用するとトラックバーの方向を反転できます。

FMX 5: トラックバー用マウスホイール
同じ TTrackBar コントロールが、キーボードによるスクロールではなく、マウスホイールによるスクロールもサポートするようになりました。トラックバーを逆方向にスクロールしても、期待どおりの方向にスクロールします。
FMX 6: 新しい配置
TAlignLayout 列挙体には、既存の豊富な配置オプションに加えて、コントロールを中央揃えにするための新しい配置オプションが追加されました。新しい配置モードには以下が含まれます。
- TopCenter は、TAlignLayout.Top と同様に、コントロールを水平方向に中央揃えにします。
- TopLeft は、TAlignLayout.Top と同様に、コントロールを左揃えにします。
- TopRight は、TAlignLayout.Top と同様に、コントロールを右揃えにします。
- LeftCenter は、TAlignLayout.Left と同様に、コントロールを垂直方向に中央揃えにします。
- LeftTop は、TAlignLayout.Left と同様に、コントロールを上揃えにします。
- LeftBottom は、TAlignLayout.Left と同様に、コントロールを下揃えにします。
- RightCenter は、TAlignLayout.Right と同様に、コントロールを垂直方向に中央揃えにします。
- RightTop は、TAlignLayout.Right と同様に、コントロールを上揃えにします。
- RightBottom は、TAlignLayout.Right と同様に、コントロールを下揃えにします。
- BottomCenter は、TAlignLayout.Bottom と同様に、コントロールを水平方向の中央揃えにします。
- BottomLeft は、TAlignLayout.Bottom と同様に、コントロールを左揃えにします。
- BottomRight は、TAlignLayout.Bottom と同様に、コントロールを右揃えにします。
FMX 7: バインドナビゲータのヒントとスタイル
Live Bindings で使用されるナビゲータコントロールである TBindNavigator では、ButtonsOptions プロパティのサブプロパティを使用して、ナビゲータの各ボタンに特定のヒントとスタイルを設定できます。

FMX 8: プレゼンテーションスクロールボックスの改善
TPresentedScrollBox コントロールには、ユーザーがスクロールアニメーション、バウンス、タッチインタラクションを制御できる新しいプロパティセットが追加されました。
- AutoHide プロパティは、スクロールが完了したときにスクロールバーを自動的に非表示にするかどうかを定義します。
- Bounces プロパティは、コンテンツを境界線を越えてスクロールできるかどうかを示します。
- ScrollAnimation プロパティは、スクロールアニメーションを有効または無効にします。
- ScrollDirections プロパティは、利用可能なスクロール方向を定義します。
- TouchTracking プロパティは、コントロールがタッチイベントに反応するかどうかを示します。
また、新しい IsVisibleChild メソッドも追加されました。このメソッドは、TScrollBox と TPresentedScrollBox のレンダリングを最適化するために使用されました。
FMX 9: メモテキストプロンプト
RAD Studio 13 では、FireMonkey の TMemo コントロールに TextPrompt プロパティが追加されました。これは、コントロールのテキストが空の場合にプレースホルダーテキストとして使用されます。TEdit の TextPrompt プロパティと同様に動作します。以下に例を示します。

FMX 10: 新しいディスプレイリンクサービス
これはFireMonkeyの根本的な変更であり、詳細なブログ記事を書く価値があります。
新しいディスプレイリンクサービスは、すべてのアプリケーションアニメーションの中心となるエンジンとなり、これまで使用されていたタイマーベースのエンジンを完全に置き換えました。このフレーム精度のシステムは、ディスプレイの実際のリフレッシュレートを利用して、すべてのUIの更新とアニメーションを同期・駆動します。 JChoreographer (Android) や DisplayLink (iOS) などのプラットフォームネイティブ API を活用することで、アニメーション処理が VSync イベントと緊密に連携し、あらゆるプラットフォーム、特に高リフレッシュレートや最新のモバイルデバイスにおいて、よりスムーズで一貫性のあるビジュアルを実現します。
アニメーションの安定性と滑らかさが向上したことは目に見えて明らかです。レンダラーの安定性が向上したことで、アニメーションがより滑らかになります。これは大きな変更と機能強化であり、FMX アニメーションは他のモバイルソリューションと同等、場合によってはそれ以上の速度を実現します。この改善は、FireMonkey が使用できるすべてのターゲットプラットフォームと GPU ドライバーで確認できます。
FMX 11: 柔軟なメニュー項目の高さ
メニュー項目 (TMenuItem) の高さは、以前は定数値でした。 RAD Studio 13 以降では、StyleName=”height” を指定した TStyleTag オブジェクトを TMenuItem スタイルに追加し、Value プロパティでメニュー項目の高さを指定できるようになりました。
FMX 12: さらに多くの絵文字
バージョン 16.0 の絵文字シンボルのサポートを追加しました
FMX 13: 新しい MaskEdit コントロール
FireMonkey 用の新しい MaskEdit コントロールが追加されました。これは VCL のコントロールと同様に動作します。入力マスク専用のデザイナーが含まれており、入力ルールの定義に役立ちます。以下の図は、デザイン時のプロパティエディターです。

VCL 版のコントロールと比較して、FMX の TMaskEdit による不正な入力の処理方法には、1 つの大きな違いがあります。FireMonkey 実装では、MaskEdit の現在の値が無効な場合、例外を発生させるのではなく、OnValidateError イベントを発生させます。このイベントを処理して、無効な値に関する視覚的なフィードバックをユーザーに提供することをお勧めします。たとえば、フィールドを赤い枠線で強調表示したり、不正な値を示すラベルを追加したり、VCL コントロールと同様に例外をスローしたりすることができます。フォーカスがリセットされた後も値が正しくない場合、コントロールは無効な状態のままとなり、値が有効になるまでOnChangeイベントはトリガーされません。
FireMonkey は進化を続けています
このブログ記事でご覧いただけるように、FireMonkey は機能面(そしてここでは触れていませんが品質面)において進化を続けています。VCL ライクなコントロールやコンポーネントを追加しながらも、より柔軟性が高く、モバイルでも問題なく動作するように努めています。アニメーションサポートの改善など、一部の機能はモバイルファーストです。マルチデバイスフレームワークを提供し、デスクトップとモバイルで単一のソースコードを使用する機能を提供すると同時に、モバイル専用またはデスクトップ専用アプリケーションの構築に必要なすべての機能を提供することが目標です。
その他のRAD Studioライブラリの機能一覧を含むブログ投稿を今後も公開していきますので、ご期待ください。
Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.
Free Delphi Community Edition Free C++Builder Community Edition





