![fmxgrid | Embarcadero RAD Studio Delphi C++Builder Blogs](https://i0.wp.com/blogs.embarcadero.com/wp-content/uploads/2020/08/fmx_grid.jpg?resize=1140%2C628&ssl=1)
Author: Shinji Chikugi
この記事は、2018年12月6日に開催されたエンバカデロ・デベロッパーキャンプ【G4】「Delphi / C++Builder / RAD Studio 新バージョンの概要」に関する解説です。
Table of Contents
IDEのUI/UX改善
IDEは見た目が大きく変わりました。まず、IDE全体の色彩がライトスタイル、ダークスタイルが共に青色ベースとなり、人間工学的観点から長時間作業で疲れない配色に変更しました。
10.3 RioのIDE
10.2.3 TokyoのIDE
変わったのは見た目だけではありません。ダイアログ全体に対して、位置や間隔の調整や余分な枠線、境界線の削除が行われました。
プロジェクトオプションダイアログの比較
タブコントロールのサイズも変更しました。
IDEインサイト(検索機能)はタイトルバーに移動しています。
他にも、新規作成ダイアログやGetItがリスト形式になり、概要と詳細が判りやすくなりました。
新しいレイアウトの新規作成ダイアログとGetIt
言語仕様のエンハンス
Delphi
かねてから要望が多かった変数の動的宣言と型宣言が追加されました。今まではvarブロックで宣言していた変数が、任意のbegin~endブロックで宣言できるようになり、変数の有効範囲はそのブロック内のみとなります。
型推論も導入されました。varで変数を型指定なしに宣言をすると、右辺の型から推論した変数の型が用いられます。ジェネリック型や無名メソッドを使用する場合に打鍵数を減らすことが出来ます。
1 2 3 4 5 6 7 8 |
procedure TForm1.btnCountClick(Sender: TObject); begin ListBox1.Items.Clear; for var I := 0 to 100 do begin ListBox1.Items.Add(I.ToString); end; end; |
C++
Windows 32-bit向けC++ Clangコンパイラは Clang / LLVM 5.0.2ベースとなり、C++17に対応しました。そしてWindows 32-bit向けの新規プロジェクトではデフォルトでC++17コンパイラが用いられるようになりました。もちろん、従来のC++コンパイラであるBCC32も引き続き使用可能です。これまでのソフトウェア資産を活用するために過去の互換性が重要な場合はBCC32を、新しいプロジェクトでC++17による新機能を使いたい場合は新しいコンパイラと、目的に応じて使い分けられます。
型推論や、範囲for文、ラムダ式といった「モダンな」機能がC++Builderにもたらされることで、ソースコードの可読性、記述性が上がり、より品質の良いコードとなるでしょう。
セッションでは、C++17で標準になったクラスの例として、std::string_viewを挙げました。C++BuilderからC++標準のライブラリに文字列を渡す場合は、一度、std::wstringに変換しますので、コピー時間などのコストがかかります。しかしstd::string_viewはポインタベースの管理ですので、メモリ領域が共有化され、パフォーマンス向上が望めます。
1 2 3 4 5 6 7 8 9 |
void __fastcall TForm2::btnCpp17Click(TObject *Sender) { UnicodeString us(L"これはUnicode文字列です"); std::wstring_view sv(us.c_str()); for (auto& c : sv) { this->ListBox1->Items->Append(UnicodeString(c)); } } |
VCLのエンハンス
10.3 Rioでは、高DPIに対する更なる対応がなされました。
VCLでのビットマップイメージはピクセルベースです。一方、コントロールはDPIスケールに応じて適切なサイズで描画されます。そのため、高解像度なモニタでDPIスケールを高くすると、相対的にビットマップイメージの表示サイズが小さくなってしまいます。しかし10.3 Rioより導入されたTVirtualImageListでは、DPIスケールに応じたビットマップを選択することができるようになります。その結果、ボタンのサイズに対して極端に小さいビットマップが表示されることがなくなります。また、Per Monitor V2のサポートにより、異なる画面間での DPI スケールの変更に対応することができます。
FireMonkeyのエンハンス
Android
Android API version 26 向け開発をサポートするようになりました。これにより、Google Play ストア向けの新規アプリ申請で必要な条件を満たします。
以下のコントロールでネイティブコントロールが使用できるようになりました。この変更により、例えば、TEditではATOKのようなサードパーティー製のキーボードの追加機能が使用可能となります。また、各コントロールには、マテリアル デザイン テーマを適用できます。
- TCalendar
- TEdit
- TSwitch
このキャプチャの上側がFireMonkey、下側がAndroidのネイティブコントロールです。
FireMonkeyは各コントロールを「絵」で表現しているのですが、本バージョンより、ネイティブコントロールの「上」にコントロールを配置する事が出来るようになりました。TButtonをTWebBrowserからはみ出るように配置したので、ボタンの上部が欠けています。
iOS
iOSはiOS 12 サポートが含まれました。
このほかにも、多数の新機能が追加されています。これらについては、Blogなどで随時発信していきます。
資料ダウンロードやセッションのビデオをご視聴ください
Delphi C++Builder / RAD Studioの新機能にご興味がある方は、ぜひ資料ダウンロードやビデオの視聴をご利用ください。また、他のセッションも新機能についての紹介がありますので、是非ともご覧下さい。
デベロッパーキャンプ資料ダウンロード
セッションのビデオを視聴する
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition