Have an amazing solution built in RAD Studio? Let us know. Looking for discounts? Visit our Special Offers page!
C++DelphiRAD Studio

Windows 11におけるVCLのサポート強化

win11_vclapp-4273036

Windows 11の公式リリースに伴い、エンバカデロでは、RAD Studio 11向けにいくつかの特定のVCLスタイルを提供しておりますが、それに加えてMicrosoftデスクトップOSの新バージョンに特化したコーディングヘルパーを提供しています。今後も随時追加していく予定です。

今年初めに発表された後、Microsoftは先週、Windows 11を正式にリリースしました。新しいハードウェアの要件により、古いコンピュータ上で新しいオペレーティングシステムを実行する際にいくつかの問題がありましたが、新しいバージョンのWindowsは、DelphiやC++Builderで作成された既存のアプリケーションと非常に高い互換性を維持しながら、より優れたユーザーエクスペリエンスとワーキング環境を提供します。今後数か月以内に、多くのエンドユーザーがWindows 11に移行することを期待しています。

今回のブログでは、Windows 11とその刷新されたユーザーエクスペリエンスに焦点を当てるのではなく、VCLアプリケーションをさらに改善して新しいOSの第一級市民にする方法に焦点を当てたいと思います。一般的に、DelphiとC++Builderには、VCLスタイルの使用から、近年導入された多くの新しいVCLコントロール(RAD Studio 10.4.2のControlListとNumberBoxコントロール、RAD Studio 11 Alexandriaの刷新されたRichEdit)など、最近のWindowsバージョンにうまく適合するための多くの機能追加があります。

ここでは、一般的な移行の提案やアイデアよりもさらに進んで、Windows 11固有のサポートに焦点を当ててみましょう。Windows 11にはWebView2コントロールがプリインストールされているため、TWebBrowserコンポーネントではなくTEdgeBrowserを採用する絶好の機会となります。また、MicrosoftはパッケージアプリケーションとMicrosoft Storeに重点を置いていますが、RAD Studio 11 IDEでは、この2つの機能をサポートするMSIX配布形式が利用可能です。(MSIXは、従来のAPPXに代わるMicrosoftのパッケージング技術です)

新しいWindows 11 VCLスタイル

先日 エンバカデロでは、Windows 11に特化したライトモードとダークモード向けの新しいVCLスタイルのセットをリリースしました。GetItパッケージマネージャで「Windows 11」と入力すると、すぐに見つけることができます。

1-7220042

2つのスタイルをインストールしたら、VCLプロジェクトの[プロジェクト]-[オプション]-[アプリケーション]-[表示]のカスタムスタイルから選択できます。

2-9631036

[ツール]-[オプション]-[フォームデザイナ]の”VCLスタイルを有効にする”にチェック入れている場合は、VCLフォームデザイナで適用したスタイルのプレビューが可能です。下図はWindows 11 ダークモードを適用したスタイルで、リストボックスにモダンスタイルの細いスクロールバーが表示されていることに注目してください。

3-5909161

角が丸いフォームや新しいプラットフォームのデフォルトに合わせた色など、Microsoftの「公式」な画像イメージを以下の通りです。

windows11light-4816822
windows11dark-4357685

Windows 11の丸い角のUI

Windows 11の最も顕著な特徴の1つは、角が丸いフォームを始めとする「丸みを帯びたUI要素」の使用です。特別な構成や設定をしていない全く新しいVCLアプリケーションを作成し、Windows 11上で実行すると、デフォルトでフォームの角が丸くなっているはずです。しかし、この機能は、DwmSetWindowAttributeという特定のパブリックなWindows APIを使用して、完全にコントロールすることができます。

Winapi.Dwmapi.DwmSetWindowAttribute(Handle, DWMWA_WINDOW_CORNER_PREFERENCE,
    @CornerPreference, sizeof(CornerPreference));

このAPIを使いやすくするためのサンプルコードは、こちらのブログで紹介しており、GitHubでソースコードを公開しています。インターフェースセクションは以下の通りです。

win11_unitinterface-8974721

フォームのinterfaceセクションのuses句で、Vcl.Formsユニットの後にこのユニットを追加するだけで、フォームには、デフォルトの丸め方を示す新しいクラスプロパティと、特定のフォーム設定のための新しいプロパティができ、以下のように次のように記述できます。

TForm.DefaultRoundedCorners := rcOff;   // set default for all forms
​RoundedCorners := rcOn;  // change the rounding for the current form

このコードはWindows 11でのみ動作し、Windows 10以前のバージョンでは無視されます(ただし、エラーは発生しません)。簡単なデモプログラムは、こちらからダウンロードできます。下図は、デモプログラムを実行した例です。

win11_vclapp-4273036

最後に、カスタムVCLのタイトルバーを使用するアプリケーションを含むVCLアプリケーションがスナップレイアウトをサポートしていることに注目してください。

win11_snap-6672888

1つの小さな問題と今後の計画について

前述しましたようにVCLアプリケーションは、Windows 11で問題なく動作します。ただし、メニューアイテムのカラーリングとそれに関連する画像については、VCLアプリケーションでは対応できない異なるデフォルトカラーが使用されているため、既知の問題があり、Embarcadero Quality Portal(RSP-35049)へ報告されてます。このケースのレポートには回避策が記載されていますが、この問題に対するRAD Studio 11の修正プログラムを近日中に提供する予定です。

今後、RAD Studio 11.1のリリースに向けて、Windows 11関連の改善や新機能のデモを計画しています。ご期待ください。

VCLでWindows 11向けのアプリケーションを構築

エンバカデロがRAD Studioの最新リリースにバージョン11を採用し、Windows 11との連携を図ったことは、決して不思議なことではありません。近年、MicrosoftのツールではUIライブラリの変更が行われていますが、DelphiやC++BuilderのVCLライブラリが提供するAPIのサポートやプラットフォームの統合は、Microsoft VisualStudioまたはサードパーティのツールセットによって比類のないものです。

Microsoftは、Windowsのネイティブ開発が重要であることを明確に示しており(Windows App SDK、別名Project Reunionを参照)、主流の選択肢であることに変わりはありませんが、この分野のライブラリ(MFCやWinFormsなど)は、VCLと同等ではなく、独自のプラットフォーム機能に遅れをとっています。

VCLライブラリは、クラシックなAPIとモダンなAPI(Win API、COMベースのAPI、WinRT)へのマッピングが可能で、高DPIモニターやモダンなUIトレンドをサポートしており、アプリケーションの全面的な書き換えを必要としないため、Windowsデスクトップの開発シナリオにおいてユニークであり、そのパワーは明らかに際立っています。Windows 11の開発には、Visual Component Library(VCL)が最適です。

RAD Studio 13.2 Florence Now Available! Kai 1.1.1 Now Available! What's Coming in RAD Studio 13.2 Florence

Reduce development time and get to market faster with RAD Studio, Delphi, or C++Builder.
Design. Code. Compile. Deploy.

Start Free Trial   Upgrade Today

   Free Delphi Community Edition   Free C++Builder Community Edition

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.

IN THE ARTICLES