|
DelphiXE4 を触ってみる 2015/03/22 |
私はこれまで Borland Delphi1.0、2、3(3.1)、4、5J、Delphi6J、Delphi7J、をこれまで使ってきまして、1.0で Pascalの勉強、Visual BASICからの移行をしまして、以前の仕事では特に、Delphi4 を中心に利用していました。現在は主に Delphi6J を利用する事が多いのですが、Delphi2010を少し使ってみた後、「Delphi XE3」へアップデートしました。これを利用するため安価なノートパソコン(Windows7)を購入しました。XE3では、Macintosh用アプリケーションを作成することが出来るとの事ですので、しばらく後に、自分自身では初の Macintosh機(MacOSX SnowLeopard 10.6.3)を購入することになりました。中古ですが。
これで、Macアプリを作ることが出来る・・・
それ以前に
ほとんど Mac を使ったことが無いのですけれども。
もちろん、Macアプリを作成するには、FireMonkey(FMX)アプリケーションを作成する必要があります。そのための勉強は、既に、「Delphi XE3」のページで記載している通りです。
ところがです。
FireMonkeyにて、いくつかテストプログラムを作成している最中、Macアプリが正常に動作しなかったのです。UIでよく利用する、コンボボックス系のコンポーネントが、Macアプリにて、フリーズしたり、いきなりアプリ終了されてしまったり、ということが起きました。ひょっとすると、他にも、同じように異常動作してしまうかもしれない? とてもじゃありませんがこんな状況では、Macアプリを作る事なんて出来やしません。
こんなこともあろうかと!!
実は、「DelphiXE4」も既に購入していて、
インストールもしていたのでした。
DelphiXE3 Pro版 → XE4 Pro版
のバージョンアップ費は、なぜか超格安の 6,000円。
(※iOSアプリ開発環境無しのバージョンアップ)
安すぎるので、大した機能アップは行われていないのだろうと勝手に判断してしばらくバージョンアップもしていませんでした。もとより、普段の購入先では、銀行振込での購入は15,000円以上(?)である事、という制限があって、バージョンアップ品を購入しようにも出来ない状態なのでした。しかしその後、別件で、XE4にバージョンアップしないといけない状況となり、いつもとは別のショップでバージョンアップ品を購入する事になりました。
これがまさかのセーフティになろうとは!
XE3では異常動作となったテストプログラムを、XE4 に移行して、コンパイルしなおし、Macアプリにしたところ、ちゃんと正常に動くではありませんか!これで安心して(?)Macアプリも作成することが出来る!
しかーし、Delphi XE4 は、まだ全くといっていいほど、触ってません。どんな内容かもわかっていません。
取りあえず、ヘルプや画面等をざっと見る限りにおいて、VCLについては、XE3 とほとんど変わらないだろうと判断。(※実際には少し違う部分もあるようです) というわけで、VCLは見ず、FireMonkey(FMX) についてのみ、少しずつ、見ていこうかと思っています。
セットアップが完了すると、Windowsのスタートメニューにショートカットが追加されます。その中の「Delphi XE4」をクリックすれば実行されます。
それでは、DelphiXE4を起動してみます。
ぱっと見た感じは、DelphiXE3とほとんど同じな感じです。メニュー「表示」→「ツールバー」→「コンポーネント」を実行し、ツールパレットを上の方に追加しておきます。
まずは最初のお約束、メニュー「ツール」→「オプション」で各種設定です。これも DelphiXE3と似ていますので、それほど迷わなさそうな感じはします。
普段作業するフォルダを決めます。いつもと同じく、Windowsのエクスプローラで「C:¥AFsoft¥DelphiXE4」というフォルダを作っておく事にします。上記の「環境オプション」内の「デフォルトプロジェクト」をそれに指定します。そのほか、
インデント幅とタブ位置を「3」(デフォルトは「2」)にして(※これは単なる私の好みです)、エディタで、「for」と記入したら自動的に
「for I := Low to High do」と記入されるのが好きではないので、
エディタ設定〜支援機能 の 「□コードテンプレート補完」の下にある「□自動補完」のチェックを外しておきます(デフォルトではチェックオン)。
DelphiXE3 と同様、
VCLアプリケーションの場合には、
・「32ビット Windows」アプリケーション
・「64ビット Windows」アプリケーション
の作成が可能です。
FireMonkeyアプリケーションの場合には、
・「32ビット Windows」アプリケーション
・「64ビット Windows」アプリケーション
・「OSX 32ビット」アプリケーション
・「iOS」アプリケーション(※iOS開発環境ありの場合)
の作成が可能な様子です。
iOSアプリケーションについては、当方が iOSデバイスを所持していませんし、iOS開発環境も導入していませんので、アプリ開発も確認も出来ませんから、それについて見る予定はありません。
その他、ヘルプの「Delphi XE4 および C++Builder XE4 の新機能」にいろいろと記述されています。iOS関連が多いですが、それ以外の部分でも色々と変わっているようです。
FireMonkey フレームFireMonkey でフレームがサポートされるようになりました。「FireMonkey のフレーム」および「フレームの操作」を参照してください。
FireMonkey で新しいフレームを作成するには、以下を選択します。
[ファイル|新規作成|その他...|Delphi プロジェクト(または C++Builder プロジェクト)|Delphi ファイル(または C++Builder ファイル)|FireMonkey フレーム] |
新しい TListView コンポーネント - 既存の TListBox コンポーネントとの比較FireMonkey に異なる 2 つのリスト コンポーネントが含まれるようになりました。2 つのリスト コンポーネントは似た機能を提供しますが、それぞれのリストの使用目的は異なります。
・TListView は、データにバインドされたスクロール可能な長いリストに使用するためのもので、そこでは、最適なスクロール性能および応答性が求められます。TListView は、すべてのターゲット プラットフォームでサポートされています。
・グループ ヘッダーを設定すると、データ ソースに応じて、アルファベット順や業種ごとなどにデータを分類することができます。
・項目はデータ ソースにバインドして TListView に追加することも、コード(Items.Add)で TListView に追加することもできます。
・TListBox は、通常はフォームの長さを越えない短いリスト向けに設計されていて、スクロールすることは想定していません。
・TListBox の用途は、ユーザー サインアップやログイン用のフォーム、多くの iOS アプリケーションで見られる角の丸い設定用のリスト ボックスなどです。
・項目は手動で TListBox に追加することも([項目の追加]コンテキスト メニュー コマンドを使用)、データ ソースを通じて TListBox に追加することもできます。 |
XE4 でのスタイルの使用
現在では、FireMonkey のビットマップベースのスタイルには、iOS、Windows、Mac 向けのネイティブ スタイル設定が含まれています。
付属の[ビットマップ スタイル デザイナ]を使って、独自のカスタム ビットマップベース スタイルを作成できます。
FireMonkey デスクトップ アプリケーションおよびモバイル アプリケーションでベクトル スタイルを扱うこともできます。
iOS アプリケーションでベクトル スタイルを使用する場合は、ストローク描画とクリッピングに関して少し制限があるほか、グラデーションのキー点が最大 4 つまでになっています。
3D コンポーネントが Retina ディスプレイをサポート
すべての FireMonkey 3D コンポーネントは、Retina デバイス上での実行時には自動的に高解像度モードで動作します。追加のプロパティは必要ありません。
FireMonkey 3D コンポーネントには以下のものなどがあります。
TForm3D
TViewport3D
TLayer3D
Mac OS X フルスクリーン モード
FireMonkey では、Mac アプリケーションの右上隅に 2 つの矢印のアイコン(Fullscreen2.png)が表示されて、フルスクリーン モードへの切り替えや同モードからの切り替えを行えるなど、フルスクリーン モードがサポートされています。
フルスクリーン アイコンを有効にするには、ShowFullScreenIcon プロパティを使用します。
アプリケーションをフルスクリーン モードで開始するには、FullScreen プロパティを使用します。
詳細については、「Mac OS X のフルスクリーン モード」を参照してください。
センサ
FireMonkey では、複数のセンサがサポートされています。サポートされているセンサの一覧については、FMX.Sensors ユニットを参照してください。
位置センサ(GPS および三角測量)
モーション センサ(iOS および Windows での加速度計へのアクセス)
方位センサ(iOS および Windows でのジャイロスコープ/コンパスへのアクセス)
「iOS チュートリアル:iOS デバイスの位置センサを使用する」も参照してください。
テキスト レイアウトおよびテキスト サービスの機能強化
レンダリング機能の実装は FMX.Text から新しいユニット FMX.TextLayout に移動しました。
詳細については、以下を参照してください。
FireMonkey のテキスト レイアウト
FireMonkey テキスト レイアウト機能の使用
テキスト レイアウト
FireMonkey の TTextLayout は iOS でもサポートされるようになり、さらに、以下の新しい機能も用意されています。
RenderLayout を使ってテキストをキャンバス上にレンダリングする
ConvertToPath 手続きを使って、テキストを TPathData に変換する
テキスト サービス
選択したテキストの操作、線描画、カーソル操作など、テキストを操作するためのアクションが iOS でも使用できます。
標準アクションは ITextActions で公開されています。
FireMonkey のサービス
プラットフォーム サービス
FireMonkey XE4 には、プラットフォーム サービスと呼ばれる機能が導入されており、アプリケーションを実行することになるプラットフォームが実際に指定のサービスをサポートしているかどうかを返すのに役立ちます。
詳細については、「FireMonkey プラットフォーム サービス」を参照してください。
FireMonkey コントロールのマージンとパディング
FireMonkey XE4 では、Margins と Padding の動作が、以下のように入れ替わっています。
Padding を指定すると、その分だけコントロールの内側に余白が付け加えられます。
Margins を指定すると、その分だけコントロールの外側に余白が付け加えられます。
これで、FireMonkey のマージンおよびパディングが、CSS のボックス モデルや、VCL で使用されている確立した定義に従ったものになりました。
Margins および Padding の使い方の詳細は、「マージンとパディングを使った整列」および「FireMonkey コンポーネントのレイアウト関連共通プロパティを使用する」を参照してください。
新規 FireMonkey ユニット
FMX.WebBrowser
FMX.Sensors(XE4 以前に導入)
FMX.Pickers
FMX.PhoneDialer
FMX.MedialLibrary.Actions
FMX.MagnifierGlass
FMX.InertialMovement
FMX.Header
FMX.Controls.3D
リファクタリングされた FireMonkey
クラス一部の FireMonkey クラスが別のユニットに移動しました。
FireMonkey のリファクタリングの例:
FMX.Controls ユニットのコントロールが FMX.StdCtrls に移動しました。たとえば次のようなコントロールです。
FMX.Controls.TAniIndicator は FMX.StdCtrls.TAniIndicator になりました。
FMX.Controls.TButton は FMX.StdCtrls.TButton になりました。
FMX.Controls.TCalloutPanel は FMX.StdCtrls.TCalloutPanel になりました。
FMX.Controls.TCheckBox は FMX.StdCtrls.TCheckBox になりました。
FMX.Controls.TToolBar は FMX.StdCtrls.TToolBar になりました。
FMX.Types.IScene は FMX.Controls.IScene になりました。
FMX.Types.TTextControl は FMX.Controls.TTextControl になりました。
FMX.Types3D.TViewPort3D は FMX.Viewport3D.TViewport3D になりました。
FMX.TForm3D および FMX.TCustomForm3D は FMX.Forms3D になりました。
新しい親ユニット(FMX.StdCtrls など)が #include や uses で参照されていて、該当するクラスへの参照で古いユニット名(FMX.Controls など)を指定していない限り、リファクタリングを目的としたこれらの変更はユーザーに影響しないはずです。ただし、FMX.TForm3D を使用している既存のプロジェクトを移行する場合には、#include や uses に新しいユニット名(FMX.Forms3D)を追加しなければならない可能性があります。リファクタリングされたクラスの一覧については、「XE4 でリファクタリングされた FireMonkey クラス」を参照してください。
Caret プロパティの可視性が published に
TEdit、TClearingEdit、TMemo の各コントロールの Caret プロパティは、published の可視性で再宣言されています。そのため、これらのコントロールの Caret プロパティは[オブジェクト インスペクタ]に表示されます。
HScrollBar と VScrollBar の可視性が protected に
以下の HScrollBar と VScrollBar は、TScrollBox およびその継承者(TMemo など)の protected プロパティとして宣言し直されています。
HScrollBar
VScrollBar
アクション リスト エディタの改良
[カテゴリ]ペインには、アクション リストに含まれているアクションの Actions.TContainedAction.Category プロパティの名前が階層ツリーとして表示されます。このツリーには、いくつかのレベルの分岐が含まれている可能性もあります。たとえば、File カテゴリ(トップレベルの分岐)に Export サブカテゴリ(第 2 レベルの分岐)があり、そこにいくつかのアクションが含まれているとしましょう。この場合、[オブジェクト インスペクタ]では、File と Export の両方のカテゴリをドット記号で連結した File.Export が Category プロパティに表示されます。
FireMonkey のプラットフォームに依存しない高度なスクロールエンジン
iOS でのスクロール機能は、Windows でのデフォルトのスクロール機能よりも高度です。TAniCalculations クラスは、iOS でのあらゆるスクロール機能をサポートしている万能スクロール エンジンを提供します。TAniCalculations スクロール エンジンでは、あらゆるプラットフォームで同じ物理スクロール機能を提供します。そのため、FireMonkey では、ターゲット プラットフォーム(OS X、Windows、iOS)のスクロール動作を使用します。
デフォルトでは、プラットフォームごとに TAniCalculations スクロール エンジンは、プラットフォームの標準的なスクロール動作を提供するスクロール動作プロパティを取得します。しかし、スクロール プロパティの値をプログラムで設定して、他のプラットフォームの典型的なスクロール動作をエミュレートすることができます。たとえば、Windows で iOS スクロール動作のエミュレーションを選択でき、その逆もまた同様です。
設定または指定可能なスクロール パラメータのいくつかを以下に示します。
スクロールがアニメーションかどうか(FMX.InertialMovement.TAniCalculations.Animation)
アニメーションの減速率(FMX.InertialMovement.TAniCalculations.DecelerationRate)
スクロール アニメーションが領域内に限定されるかどうか(FMX.InertialMovement.TAniCalculations.BoundsAnimation)
スクロールの開始時にスクロール バーが自動的に表示されるかどうか(FMX.InertialMovement.TAniCalculations.AutoShowing)
スクロール バーが不要時に自動的に非表示になるかどうか(FMX.InertialMovement.TAniCalculations.Shown) |
等
それではまずテストプログラムを作ってみます。
従来のVCLアプリケーションという事で、
メニュー「ファイル」→「新規作成」→「VCLフォームアプリケーション - Delphi」を実行します。
最初の画面はこんな感じ。恒例パターンですね。
ツールパレット「Standard」の中にある「TLabel」を選択し、フォームに Labelコンポーネントを配置して、オブジェクトインスペクタで Caption プロパティを「これはテストです!」として、Fontプロパティのサイズを大きくしてみました。フォームの大きさを調整。
エクスプローラで、「C:¥AFsoft¥DelphiXE4¥test」フォルダの中に「001」というフォルダを作ってその中に入れる事にします。メニュー「ファイル」→「名前を付けて保存」を行い、Unit1.pas を保存します。
メニュー「ファイル」→「プロジェクトに名前を付けて保存」を行い、「Project1.dproj を保存します。
プロジェクトマネージャで、ビルド構成を「Release」に、ターゲットプラットフォームを「32ビット Windows」にしておきます。開発中のプログラムの場合はデバッグモード(ビルド構成を「Debug」)で行う事が多いと思われますが作成されるファイルサイズが大きくなりますので、開発完了の際には「Release」に変えてビルドを行います。
それではコンパイル(ビルド)をします。
メニュー「プロジェクト」→「Project1 をビルド」を実行します。Unit1だけなのでコンパイルでもいいです。エラーせず正常に終了すると、下図のように終了画面が出ますので[OK]します。
それでは実行してみます。
メニュー「実行」→「実行」です。
右上の[×]をクリックして閉じます。
Windowsのエクスプローラで確認します。
「C:¥AFsoft¥DelphiXE4¥test¥001」内を見ると・・・
という風に「Win32」〜「Release」フォルダの中に「Project1.exe」が出来ているのが分かります。これが出来上がった実行プログラム(アプリケーション)ですがなんと、2MBもあります。Delphi2010が800KB程でしたから、それに比べると大きくなっています。DelphiXE3 では 2,225KBですのでそれよりは若干大きくなっています。
というわけで、感覚的には、DelphiXE3 とほとんど同じです。
|
|
バッチファイル
BASIC
C言語のお勉強
拡張子な話
DOSプログラム
Delphi
>Delphi入門編
>Delphi2010
>DelphiXE3
>DelphiXE4
■TOP
2015/03/22
▼2015/03/23
シェアウェア
Script!World
データベース
|