Delphi、C++Builder、およびRAD Studio 10.4.2では、新機能として仮想化されたリストコントロールと数値入力ボックスの2つの新しいVCLコントロールが導入されました。
Table of Contents
新しいVCL TControlListコントロール
10.4.2では、新しい柔軟で仮想化されたリストコントロールが導入されています。このコントロールの背景にあるアイデアは、非常に長いリストを処理するため高パフォーマンスなコントロールとして設計されており、カスタム UI 設定オプションを備えた最新のルックアンドフィールを提供します。このリストは単一の選択リストを表し、すべての項目は視覚的に同じ高さと幅を持っています。
FireMonkey の ListView 項目デザイナと同様、この新しい VCL TControlList では、listview 項目のレイアウトを設計することができ、その後、リスト内の項目それぞれに対して(仮想的に)複製されます。TControlList は、開発者が好みに合わせてカスタマイズできる単一列と複数列の両方のレイアウトを提供し、完全に仮想化されているため、リストは数千から数百万もの項目を処理でき、非常に高速なスクロールを提供します。外面に合う項目のみを計算および表示するだけでなく、リストはインメモリ ビットマップを使用して、項目のコンテンツをキャッシュします。
TControlListコントロールは、従来のTDBCtrlGridコントロールに似ています。コントロール用のパネルがあり、そこにコントロールを配置し、実行時に仮想的なアイテムを作成します。TDBCtrlGridとは異なり、TGraphicControlから派生したコントロールのみを配置でき、すべてのアイテムは仮想的に作成されます。下の図では、設計時の画面です。
このリストには、特定の情報を持つアイテムのコレクションは含まれていません。データは、ライブバインディング(データセットやオブジェクトのコレクションへのLiveBindings を含む)を介して提供するか、個々の項目のデータを問い合わせるイベントを介して提供することができます(直接の保存やマッピングは開発者に任されています)。
各アイテムを表示するために、コントロールは各アイテムの外観をカスタマイズするために使用できるイベントハンドラを呼び出します。以下のコード例は、LabelのCaptionプロパティを変更しています。
1 2 3 4 5 |
procedure TForm2.ControlList1BeforeDrawItem(AIndex: Integer; ACanvas: TCanvas; ARect: TRect; AState: TOwnerDrawState); begin Label1.Caption := 'Label' + AIndex.ToString; end; |
以下の図は実行時の画面で、10,000項目と複数のカラムを表示されます。
設計時には、TControlListプロパティの調整や特定のプロパティを持つコントロールコレクションなど、プリセット構成のコレクションを含む特別なダイアログが用意されています。
設計したアイテムは、ItemCountプロパティで要求されたアイテムごとに(仮想的に)複製されます。通常、同じ幅と高さのアイテムを複数配置できます。 コントロールには3つの異なるレイアウトがあります。
- Singleは、アイテムの単一の列を指定でき、アイテムの幅はコントロールの幅と一致します。
- MultiTopToBottomは、複数のカラムを使用することができ、次のカラムに移動する前に利用可能な垂直方向のスペースを使用し、垂直方向のスクロールを提供します。
- MultiLeftToRightは、複数のカラムを使用することができますが、異なるレイアウトと水平スクロールモードを使用します。
すべてのアイテムは仮想化されています。 コントロールは優れたパフォーマンスを発揮し、100万以上のアイテムを問題なく持つことができます。 このコントロールの内部ロジックでは、スクロールバーの情報をチェックし、その範囲で表示されるアイテムとその位置をリアルタイムで処理します。つまり表示に必要なアイテムだけを描画しているため、仮に内部で100万以上のアイテム数が存在していても、不必要なメモリ 確保や余計なアイテムの描画は行わないため、余計なオーバーヘッドは発生せず、非常に高速なスクロールが維持できます
なお、一般的にコントロールリスト上の任意のコントロールにOnClickイベントを使用することができます。この新しいコントロールは、High DPI オプションとVCL スタイルをサポートし、完全にLiveBindingsに対応しています。
新しいTControlListButtonコンポーネント
コントロールは、ボタンの状態変更などの特別な操作を処理しないため、TSpeedButtonをパネル上で直接使用することは適切ではありません。さまざまな状態に対応するために特別なTControlListControlクラス(TGraphicControlから継承)を追加しました。そしてTControlListControlクラスを継承し、アイテムにマウスイベントを使用できる新しいコンポーネント「TControlListButton」を提供しています。
TControlListButtonコンポーネントは、TControlListと共に使用されるよう設計されており、 プッシュ ボタン、ツール ボタン、リンク の3つのスタイル-で構成されており、TSpeedButton に似ています。
新しいVCL TNumberBox コントロール
新しい VCL TNumberBox コントロールは、モダンな外観の数値入力コントロールで、Windowsプラットフォームの WinUI NumberBox コントロールに似ています。このコントロールは、整数、指定された 10 進数と適切な形式のセットを持つ浮動小数点数、および通貨値の入力をサポートします。
同様の機能を備えたサードパーティのコントロールもありますが、VCL には遥かに制限されたSpinEdit コントロールしかなく、UI は古く、整数に制限されていました。
新しいコントロールはモダン UI であり、VCL スタイルをサポートしており、High DPI 対応、そして、ビジュアル スタイルや動作を調整するための多くの追加プロパティが用意されています
ユーザーは、矢印ボタンや矢印キーまたはマウスホイールを使用して値を増減したり、PageUpキーとPageDownキーを使用して値を大きい単位(例えば、±10)に増減したりできます。 このコンポーネントには、スピンボタンのオプション(TNumberBoxコントロールのSpinButtonOptionsの Placementプロパティで設定)の変更が行えます。それぞれの設定は、下図のようにCompact、Inline、またはNoneに変更することができます。
このコンポーネントは単純な式の評価もサポートしています。AcceptExpressionsプロパティを有効にすると、ユーザは40+2のような式を入力でき、コントロールはそれを結果に置き換えます。さらに乗算、除算、加算、減算などの基本的な方程式のインライン計算をサポートしています(括弧の使用が可能です)。記号+と-の両方を二項演算と単項演算の両方として使用できるため、例えば、-23または+ 23と入力したり、55+23あるいは55-23と書くこともできますし、53++23や53–23のように組み合わせることもできますが、これは 53 – (-23) として評価されます。
今すぐ10.4.2を使い始めよう
すでに、10.4.2のトライアル版が利用可能になっており、今後製品を購入いただくと、10.4.2をダウンロードいただけるようになります。また、すでに製品をお持ちの方は、有効なアップデートサブスクリプションがあれば、既存のライセンスを使用してRAD Studio 10.4.2をご利用いただけます。10.4.2のダウンロードは、新しいカスタマーポータルサイト(my.embarcadero.com)から行えます。
詳細については、以下の情報をご確認ください。
- RAD Studio 10.4.2 Sydney Release 2の提供開始を発表
- 10.4.2の新機能
- DocWikiの10.4.2新機能ページ
- RAD Studio 10.4.2 における新機能と修正された顧客から報告された問題
- VCL TControlListコントロールの使用 (docwiki ja)
- VCL TNumberBoxコントロールの使用 (docwiki ja)
エンバカデロでは、10.4.2において行った作業について大きな成果を上げることができたと考えており、皆さんがこの新しいリリースをご活用いただけるものと期待しています。
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition