...

RAD Studio iOS チュートリアル

by user

on
Category: Documents
10

views

Report

Comments

Transcript

RAD Studio iOS チュートリアル
製品ドキュメント
RAD Studio
iOS チュートリアル: Delphi による iOS アプリケーション開発
バージョン XE4
© 2013 Embarcadero Technologies, Inc. Embarcadero、Embarcadero Technologies のロゴ、およびすべての
Embarcadero Technologies の製品名またはサービス名は、Embarcadero Technologies, Inc. の商標または登録商標
です。その他の商標名に関する権利はすべてその所有者に帰属します。
Embarcadero Technologies, Inc. は、アプリケーション開発者やデータベースプロフェッショナルに向け、使用する
プラットフォームやプログラミング言語に関係なく、最適なシステム設計、より高速な構築、より高品質な実行を実
現するツールを提供する、先進ベンダーです。「フォーチュン 100」のうち 90 以上の企業、そして世界で 300 万以
上の活発なコミュニティがエンバカデロの製品を採用し、生産性の向上、コストの削減、変更管理や互換性管理の簡
素化、技術革新を実現しています。主要製品には次のものがあります:
Embarcadero® Change Manager™、CodeGear™ RAD Studio、DBArtisan®、Delphi®、ER/Studio®、JBuilder®
and Rapid SQL®。1993 年設立のエンバカデロは、サンフランシスコに本社を置き、世界各国に支社を展開していま
す。エンバカデロについては、www.embarcadero.com をご覧ください。
2013 年 4 月
Embarcadero Technologies
2
目次
Delphi による iOS アプリケーション開発 ......................................................................................... 8
セットアップ .................................................................................................................................... 8
基本的なユーザー インターフェイス要素の使用 .......................................................................... 8
デバイス機能の利用 ......................................................................................................................... 9
データベースへのアクセス............................................................................................................ 10
関連項目 .......................................................................................................................................... 10
Mac に開発環境をセットアップする ................................................................................................ 11
Mac 側の要件 .................................................................................................................................. 11
iOS シミュレータで iOS アプリケーションを実行するための Mac の構成手順 ...................... 11
ステップ 1:プラットフォーム アシスタントをインストールする ...................................... 12
ステップ 2:プラットフォーム アシスタントを実行する...................................................... 13
ステップ 3:Mac に Xcode をインストールする .................................................................... 14
この後のステップ....................................................................................................................... 14
iOS デバイスで iOS アプリケーションを実行するための Mac の追加の構成手順 .................. 15
ステップ 1:Mac に Xcode コマンド ライン ツールをインストールする............................ 15
ステップ 2:デベロッパ アカウントを登録する ..................................................................... 16
ステップ 3:開発用証明書を要求、ダウンロード、インストールする................................ 16
ステップ 4:デバイスを開発用に登録する ............................................................................. 18
ステップ 5:プロビジョニング プロファイルを作成してインストールする ....................... 18
関連項目 ...................................................................................................................................... 19
Windows PC に 開発環境をセットアップする................................................................................. 21
RAD Studio 環境のセットアップ .................................................................................................. 21
Mac 用の接続プロファイルを作成する.................................................................................... 21
Mac に接続された iOS デバイス用に開発システムに SDK を追加する ................................ 23
関連項目 ...................................................................................................................................... 26
FireMonkey iOS アプリケーションを作成する................................................................................ 27
取りかかる前に............................................................................................................................... 27
ステップ 1:iOS 用 FireMonkey アプリケーションを新規作成する ......................................... 27
ステップ 2:FireMonkey iOS フォームにコンポーネントを配置する ...................................... 28
ステップ 3:ユーザーがボタンをクリックしたときの
イベント ハンドラを Delphi で記述する...................................................................................... 32
ステップ 4:Mac(iOS シミュレータ)上で iOS アプリケーションをテストする ................. 33
Embarcadero Technologies
3
ステップ 5:接続された iOS デバイス上で iOS アプリケーションをテストする ................... 34
関連項目 .......................................................................................................................................... 35
さまざまなスタイルを持つボタン コンポーネントを iOS アプリケーションで使用する ........... 36
FireMonkey iOS アプリケーションのボタン ............................................................................... 36
ボタン コンポーネントのルック アンド フィールを定義する ................................................... 37
ボタン コンポーネントを使用してセグメント コントロールを作成する ................................. 38
ツールバー コンポーネント上にスコープ バーを作成する ........................................................ 41
関連項目 .......................................................................................................................................... 41
iOS アプリケーションでカレンダー コンポーネントを使用して日付を選択する ....................... 42
FireMonkey iOS アプリケーションのカレンダー ........................................................................ 42
ユーザーによる日付変更のイベント ハンドラを実装する ......................................................... 43
関連項目 .......................................................................................................................................... 44
iOS アプリケーションでコンボ ボックス コンポーネントを使用して
リストから項目を選択する................................................................................................................ 45
FireMonkey iOS アプリケーションで選択コントロールを実装する ......................................... 45
コードを使って項目のリストを構築する..................................................................................... 47
特定の項目を表示する ................................................................................................................... 48
ユーザーによる選択のイベント ハンドラを実装する................................................................. 49
関連項目 .......................................................................................................................................... 50
iOS アプリケーションで Web ブラウザ コンポーネントを使用する ............................................ 51
ステップ 1:ユーザー インターフェイスを設計する ................................................................. 51
ステップ 2:ユーザーが編集コントロールで URL を変更すると Web ページを開くよう
イベント ハンドラを記述する....................................................................................................... 53
Web ページを開くための共通メソッドを実装する ................................................................ 54
OnChange イベントのイベント ハンドラを実装する ............................................................ 55
Enter キーをサポートするイベント ハンドラを実装する ...................................................... 56
"戻る" ボタンのイベント ハンドラを実装する....................................................................... 56
ステップ 3:Web ブラウザ アプリケーションに適したキーボードを選択する ...................... 57
関連項目 .......................................................................................................................................... 58
iOS アプリケーションでタブ コンポーネントを使用してページを表示する ............................... 59
FireMonkey iOS アプリケーションのタブ ................................................................................... 59
フォーム デザイナを使用してタブ ページを設計する................................................................ 59
タブのカスタム アイコンを使用する ........................................................................................... 63
Embarcadero Technologies
4
タブ コントロール内のコントロールを定義する ........................................................................ 66
実行時にページを変更する............................................................................................................ 67
ユーザーがタブをタップしたときに ........................................................................................ 67
アクションとアクション リストを使用して............................................................................ 68
ソース コードによって .............................................................................................................. 71
関連項目 .......................................................................................................................................... 72
iOS アプリケーションでリスト ボックス コンポーネントを使用して
テーブル ビューを表示する............................................................................................................... 73
リスト ボックス コンポーネントに項目を作成する ................................................................... 73
ヘッダーを追加する ....................................................................................................................... 75
リストにグループ ヘッダー/フッターを追加する ....................................................................... 77
リスト項目を別のグループ化された項目として表示する .......................................................... 78
リスト ボックス項目にチェック ボックスなどのアクセサリを追加する ................................. 79
リスト ボックス項目にアイコンを追加する ................................................................................ 79
項目に詳細情報を追加する............................................................................................................ 80
コードからリスト ボックスに項目を追加する ............................................................................ 80
検索ボックスを追加する ............................................................................................................... 82
関連項目 .......................................................................................................................................... 83
iOS アプリケーションでレイアウトを使用して
フォームのさまざまなサイズや向きを調整する ............................................................................. 84
FireMonkey コンポーネントはどれも所有者、親、子を持つことができる ............................. 84
FireMonkey コンポーネントのレイアウト関連共通プロパティを使用する ............................. 85
Align プロパティを使用する ..................................................................................................... 85
Margins プロパティを使用する ................................................................................................ 86
Padding プロパティを使用する ................................................................................................ 86
Anchors プロパティを使用する ................................................................................................ 87
TLayout コンポーネントを使用する ............................................................................................. 88
多くの項目を含むインターフェイスの扱い:TVertScrollBox コンポーネントを使用する ..... 88
関連項目 .......................................................................................................................................... 90
iOS アプリケーションで写真を撮って共有する .............................................................................. 91
アプリケーションのユーザー インターフェイスを構築する ..................................................... 92
iOS デバイスのカメラで写真を撮る............................................................................................. 92
iOS デバイスのフォト ライブラリの写真を使用する ................................................................. 93
Embarcadero Technologies
5
写真を共有または印刷する............................................................................................................ 94
関連項目 .......................................................................................................................................... 95
iOS デバイスの位置センサを使用する ............................................................................................. 97
ユーザー インターフェイスを設計する ....................................................................................... 98
位置センサ ...................................................................................................................................... 99
位置センサ コンポーネントから位置情報(緯度、経度)を読み取る ...................................... 99
TWebBrowser コンポーネントで Google マップを使用して現在の位置を表示する ............ 100
逆ジオコーディングを使用する .................................................................................................. 101
リスト ボックス コンポーネントに人が読み取れる住所を表示する....................................... 104
関連項目 ........................................................................................................................................ 104
iOS デバイスの通知センターを使用する ....................................................................................... 105
3 つの基本的な通知(警告)方法 ............................................................................................... 105
アプリケーション アイコンのバッジ ..................................................................................... 105
iPad の通知バナー .................................................................................................................... 105
通知ダイアログ ........................................................................................................................ 105
iPad の通知センター ................................................................................................................ 105
通知サービスにアクセスする...................................................................................................... 106
コードからアイコン バッジの数字を設定する .......................................................................... 107
通知のスケジュールを設定する .................................................................................................. 108
スケジュールされた通知メッセージを更新またはキャンセルする......................................... 109
通知メッセージをすぐに表示する .............................................................................................. 110
通知バナーと通知ダイアログ...................................................................................................... 111
通知ダイアログにアクションを追加する................................................................................... 113
関連項目 ........................................................................................................................................ 113
iOS アプリケーションで InterBase ToGo を使用する .................................................................. 114
dbExpress を使用してデータベースに接続する........................................................................ 114
ユーザー インターフェイスを設計しセットアップする ........................................................... 115
データに接続する ......................................................................................................................... 116
アプリケーションを iOS に配置する.......................................................................................... 119
InterBase ToGo、dbExpress ドライバ、データベース ファイルを iOS に配置する......... 119
iOS 上のローカル データベース ファイルに接続するようコードを変更する.................... 121
iOS シミュレータまたは iOS デバイス上でアプリケーションを実行する ............................. 122
トラブルシューティング ............................................................................................................. 123
Embarcadero Technologies
6
InterBase のライセンスの問題 ................................................................................................ 123
例外処理の問題 ........................................................................................................................ 123
よくあるエラーと解決方法 ..................................................................................................... 125
関連項目 ........................................................................................................................................ 125
iOS アプリケーションで SQLite を使用する ................................................................................. 126
dbExpress を使用してデータベースに接続する........................................................................ 126
Windows 環境で開発用にデータベースを作成する .................................................................. 127
[データ エクスプローラ]でデータベースを作成する....................................................... 127
[データ エクスプローラ]でテーブルを作成する .............................................................. 128
ユーザー インターフェイスを設計しセットアップする ........................................................... 129
データに接続する ......................................................................................................................... 130
ユーザーがリストの項目を選択したときに削除ボタンを表示するための
イベント ハンドラを作成する..................................................................................................... 132
リストにエントリを追加するための追加ボタン用のイベント ハンドラを作成する ............. 132
リストからエントリを削除するための削除ボタン用のイベント ハンドラを作成する ......... 135
iOS 上のローカル データベース ファイルに接続するようコードを変更する ........................ 136
iOS デバイス上での SQLite データベースの場所を指定する .............................................. 136
テーブルが存在しなければ作成する ...................................................................................... 136
iOS シミュレータまたは iOS デバイス上でアプリケーションを実行する ............................. 138
関連項目 ........................................................................................................................................ 138
iOS クライアント アプリケーションからエンタープライズ データベースに接続する............. 139
中間層(DataSnap サーバー)を作成する ................................................................................ 140
DataSnap サーバー VCL アプリケーションを作成する ........................................................ 140
DataSnap サーバー上のデータセットを定義する................................................................. 142
DataSnap サーバーのデータセットを公開する .................................................................... 144
DataSnap サーバーを実行する ............................................................................................... 144
DataSnap サーバーに接続する iOS アプリケーションを作成する.......................................... 145
MIDAS ライブラリを iOS シミュレータに配置する ................................................................. 148
iOS シミュレータまたは iOS デバイス上でアプリケーションを実行する ............................. 149
関連項目 ........................................................................................................................................ 149
Embarcadero Technologies
7
Delphi による iOS アプリケーション開発
統合されたこれら一連のチュートリアルでは、RAD Studio を使用した iOS アプリケーション
の開発について段階的に説明しています。
•
最初のセットアップ チュートリアルの後、各チュートリアルでは、FireMonkey ツール
を使用して iOS アプリケーションを作成する方法を示しています。
•
これらのチュートリアルでは、iOS アプリケーションでネイティブのルック アンド フ
ィールを実現するための推奨される FireMonkey コンポーネントを実際に使用して説明
しています。
セットアップ
•
Mac に開発環境をセットアップする
•
Windows PC に開発環境をセットアップする
基本的なユーザー インターフェイス要素の使用
•
FireMonkey iOS アプリケーションを作成する
•
さまざまなスタイルを持つボタン コンポーネントを iOS アプリ
ケーションで使用する
Embarcadero Technologies
8
•
iOS アプリケーションでカレンダー コンポーネントを使用して
日付を選択する
•
iOS アプリケーションでコンボ ボックス コンポーネントを使用
してリストから項目を選択する
•
iOS アプリケーションで Web ブラウザ コンポーネントを使用
する
•
iOS アプリケーションでタブ コンポーネントを使用してページ
を表示する
•
iOS アプリケーションでリスト ボックス コンポーネントを使用
してテーブル ビューを表示する
•
iOS アプリケーションでレイアウトを使用してフォームのさま
ざまなサイズや向きを調整する
デバイス機能の利用
•
Embarcadero Technologies
iOS アプリケーションで写真を撮って共有する
9
•
iOS デバイスの位置センサを使用する
•
iOS デバイスの通知センターを使用する
データベースへのアクセス
•
iOS アプリケーションで InterBase ToGo を使用する
•
iOS アプリケーションで SQLite を使用する
•
iOS クライアント アプリケーションからエンタープライズ デー
タベースに接続する
関連項目
•
FireMonkey クイック スタート
•
FireMonkey iOS アプリケーションの作成
•
FireMonkey アプリケーションの設計
•
iOS サンプル コード
•
iOS モバイル アプリケーション開発
Embarcadero Technologies
10
Mac に開発環境をセットアップする
iOS ターゲット プラットフォーム向けの FireMonkey アプリケーションは、最初、Mac で使用
可能な iOS シミュレータでテストされます。テスト工程の後半では、iOS デバイス ターゲット
プラットフォームを使用するため、Mac に接続されたテスト用の iOS デバイスが必要になりま
す。
•
このチュートリアルの前半では、Mac 上の iOS シミュレータで iOS アプリケーション
を実行するために行わなければならない手順を説明します。
•
このチュートリアルの後半では、iOS デバイスで iOS アプリケーションを実行するため
に必要な追加の手順を説明します。
Mac 側の要件
•
OS X 10.7 Lion または 10.8 Mountain Lion
(どちらの OS も、従来の PowerPC ベースおよび 680x0 ベースの Macintosh システム
ではサポートされていません。2007 年以降の Mac はすべて Intel ベースで、2008 年以
降はすべて 64 ビットです。これは Lion での必要条件です。)
•
iOS 5.1 以降
•
Xcode および iOS SDK の最新版と Xcode コマンド ライン ツールがインストールされ
ていること
o
いずれか 1 つの Apple デベロッパ プログラムのメンバであること(これについ
ては、このトピックの「デベロッパ アカウントを登録する」で説明します)
•
iOS デバイスが USB ポートで Mac に接続されていること(デバイス上での iOS アプリ
ケーションのテストや実行に必要)
iOS シミュレータで iOS アプリケーションを実行するための
Mac の構成手順
iOS アプリケーションを Mac 上の iOS シミュレータに配置するには、以下のツールを Mac に
インストールする必要があります。
•
プラットフォーム アシスタント(PAServer)
Embarcadero Technologies
11
RAD Studio では、デバッグ用にプラットフォーム アシスタントを使用します。このア
プリケーションは、Mac 上にインストールして実行する必要があります。
•
Xcode
Xcode は、Mac 上で動作する開発およびデバッグ用の環境であり、Mac OS X アプリケ
ーションおよび iOS アプリケーションに必要な開発用ファイルが備わっています。
ステップ 1:プラットフォーム アシスタントをインストールする
先に述べたように、PC から iOS シミュレータまたは iOS デバイスに iOS アプリケーションを
配置するには、Mac 上でプラットフォーム アシスタントを実行しておく必要があります。
プラットフォーム アシスタントの Mac OS X インストーラは、RADPAServerXE4.pkg という
名前で、次の 2 つの場所に置かれています。
•
RAD Studio インストール ディレクトリの PAServer フォルダ。
例: C:\Program Files\Embarcadero\RAD
Studio\n.n\PAServer\RADPAServerXE4.pkg
•
Web 上(Mac へのダウンロード用)
http://installers.codegear.com/release/radstudio/11.0/PAServer/RADPAServerXE4.pkg
Embarcadero Technologies
12
詳細は、「Mac でのプラットフォーム アシスタントのインストール」を参照してください。
ステップ 2:プラットフォーム アシスタントを実行する
Mac のファインダで、次のようにして .app ファイル(RAD PAServer XE4.app)を起動します。
1. 最上位の Applications フォルダに移動します。
2. RAD PAServer XE4.app をダブルクリックして、プラットフォーム アシスタントを起動
します。
[ターミナル]ウィンドウが開き、プラットフォーム アシスタントのバナーと、パスワ
ード入力を求める次のメッセージが表示されます。
接続プロファイル パスワード <パスワードがない場合はただ Enter キーを押す>:
Embarcadero Technologies
13
3. 次に、プラットフォーム アシスタントでアプリケーションをデバッグできるよう(別の
プロセスを制御できるよう)、Mac ユーザー パスワードを入力する画面が開きます。
パスワードを入力し、[Take Control]を選択します。
プラットフォーム アシスタントの実行の詳細は、「Mac でのプラットフォーム アシスタント
の実行」を参照してください。
ステップ 3:Mac に Xcode をインストールする
Xcode は、Mac 上の開発/デバッグ環境であり、Mac OS X アプリケーションおよび iOS アプリ
ケーションに必要な開発用ファイルを提供しています。
次のどの情報源からでも Xcode をインストールできます。
•
"Mac OS X Install" DVD で Optional Installs フォルダ内の Xcode.mpkg をダブルクリッ
クして Xcode をシステムにインストールします。
•
Mac App Store で無償の Xcode をダウンロードします。
•
Apple デベロッパとして登録している場合は、Xcode の最新バージョンをバンドル
(.dmg)としてダウンロードできます。登録して Xcode をダウンロードする手順は以
下のとおりです。
1. http://developer.apple.com/programs/register/ で Apple デベロッパとして登録
します(無料)。
2. https://developer.apple.com/downloads から Xcode のバンドルをダウンロード
します。
この後のステップ
これで、iOS シミュレータ上で iOS アプリケーションを実行するための Mac の構成が済みまし
た。
Embarcadero Technologies
14
•
iOS アプリケーションを iOS シミュレータ上で実行するには、「Windows PC に開発環
境をセットアップする」を参照して RAD Studio IDE の構成を行ってください。
•
iOS アプリケーションを iOS デバイス上で実行するには、このページの以下の手順で
Mac の構成を行ってください。この手順は、アプリケーションを iOS シミュレータでテ
ストした後で行うこともできます。
iOS デバイスで iOS アプリケーションを実行するための Mac
の追加の構成手順
以下の手順を追加で実施すると、iOS デバイスで iOS アプリケーションを実行できるようにな
ります。
ステップ 1:Mac に Xcode コマンド ライン ツールをインストールする
Mac 上で Xcode を使って必要な Xcode ツールをインストールするには:
1. Mac 上で Xcode を起動します。
2. [Xcode]メニューから[Preferences...]を選択します。
3. [General]パネルで[Downloads]をクリックします。
Embarcadero Technologies
15
4. [Downloads]ウィンドウで[Components]タブを選択します。
5. [Command Line Tools]の横の[Install]ボタンをクリックします。
インストールの途中で Apple デベロッパとしてログインするよう求められます。
詳細は、「Mac での Xcode コマンド ライン ツールのインストール」を参照してください。
ステップ 2:デベロッパ アカウントを登録する
iOS デベロッパ プログラムの 1 つに参加することが、iOS 向けアプリケーションの作成、実行、
デバッグ、配置を行う場合の要件になっています。
デベロッパ プログラムには、次のいずれかの資格で参加できます。
•
個人の開発者
•
エンタープライズ(ビジネス)プログラムまたはユニバーシティ プログラムのチームの
メンバ(またはリーダー)
詳細は、「iOS デベロッパ プログラムに参加する」を参照してください。
ステップ 3:開発用証明書を要求、ダウンロード、インストールする
デバイス(または iOS シミュレータ)に配置されたアプリケーションを実行する前に、暗号化
した署名をする必要があります。開発用証明書には、アプリケーションに署名するために必要
な情報が含まれています。一人(個人の開発者もチームのメンバも)に 1 つ固有の開発用証明
書が必要で、それを複数のアプリケーションに使用することができます。
開発チームの場合には、チーム メンバそれぞれが開発用証明書を要求し、その要求をチーム管
理者が承認する必要があります。
Embarcadero Technologies
16
証明書を要求、ダウンロード、インストールする
1. Mac の[キーチェーン アクセス]アプリケーションで、[キーチェーン アクセス]メニ
ューから[証明書アシスタント|認証局に証明書を要求...]を選択します。
証明書要求をファイルに保存し、Apple の iOS プロビジョニング ポータルにアップロ
ードして認証局に送信します。
o
会社や組織のプログラムの開発チーム メンバの場合には、チーム管理者が要求
を承認する必要があります。チーム管理者の承認後に、証明書をダウンロードす
ることができます。
o
個人の開発者の場合には、要求後間もなく証明書のダウンロード オプションが
表示されます。詳細は、Apple 社のドキュメント「Creating signing certificates
(署名証明書の作成)」を参照してください。
2. iOS プロビジョニング ポータルを開きます。開発用証明書の[Status]が[Submitted]
から[Issued]に変化したら、ダウンロードすることができます。
3. 開発用証明書をダブルクリックして起動します。開発用証明書は自動的に[キーチェー
ン アクセス]アプリケーションに読み込まれます。
Embarcadero Technologies
17
ステップ 4:デバイスを開発用に登録する
デバイスでユーザー アプリケーションを実行するには、デバイスを Apple プロビジョニング
ポータルに登録する必要があります。デバイスは、一意デバイス ID(UDID)で登録されます。
UDID は、Xcode を使って次の手順で調べることができます。
1. iOS デバイスが Mac マシンに接続されていることを確認します。
2. Xcode を開き、オーガナイザを開きます([Window|Organizer])。
3. [Devices]タブで、デバイスをクリックします。
4. [Identifier]ラベルの横に文字列があります。
この[Identifier]の文字列がデバイスの UDID を表しています。
o
個人の開発者の場合には、Apple プロビジョニング ポータルの[Devices]タブ
に UDID を追加してデバイスを登録します。
o
会社/組織のメンバの場合は、チーム管理者に依頼してデバイスを登録してもら
います。
ステップ 5:プロビジョニング プロファイルを作成してインストールする
プロビジョニング プロファイルは、開発者やデバイスを開発チームに結び付けるために使われ
ます。このプロビジョニング プロファイルは、iOS デバイスでアプリケーションを実行するた
めに必要です。
•
個人の開発者の場合は、開発者自身がプロビジョニング プロファイルを作成する必要が
あります。詳細は、「Creating and Downloading a Distribution Provisioning Profile(配
布用プロビジョニング プロファイルの作成とダウンロード)」を参照してください。
•
会社/組織のメンバの場合は、メンバが使用するプロビジョニング プロファイルをチー
ム管理者が作成する必要があります。
プロビジョニング プロファイルの作成が済んだら、次の手順で Xcode にインストールします。
Embarcadero Technologies
18
1. Mac で Xcode を開き、オーガナイザを開きます([Window|Organizer])。
2. [Library]セクションで[Provisioning Profiles]を選択し、[Refresh]をクリックし
ます。
3. Apple ID でサインインするよう Xcode から指示されます。資格情報を入力して[Log
in]を選択します。
使用できるプロビジョニング プロファイルが Xcode にインストールされ、次のように
表示されます。
4. 有効な iOS プロビジョニング プロファイルを選択し、テスト用デバイスの
[Provisioning Profiles]にドラッグ アンド ドロップします。
これで、iOS デバイス上で iOS アプリケーションを実行するための Mac の構成が済みました。
iOS アプリケーションを実行するには、「Windows PC に開発環境をセットアップする」を参
照して RAD Studio IDE の構成を行ってください。アプリケーションを iOS シミュレータで実
行する一環として PC の構成を既に行っている場合には、このステップは省略してかまいませ
ん。
関連項目
•
Windows PC に開発環境をセットアップする
•
プラットフォーム アシスタント サーバー アプリケーション: paserver
•
Apple デベロッパ プログラム
Embarcadero Technologies
19
•
iOS デベロッパ プログラム
•
App ID の作成と構成
•
署名証明書の作成
•
iOS プロビジョニング ポータル
•
Apple プロビジョニング ポータルの[Devices]タブ
•
Apple ID の作成
•
配布用プロビジョニング プロファイルの作成とダウンロード
•
Mac でのプラットフォーム アシスタントのインストール
•
Mac でのプラットフォーム アシスタントの実行
Embarcadero Technologies
20
Windows PC に
開発環境をセットアップする
このチュートリアルを開始する前に、次のチュートリアルを読んで実行してください。
•
Mac に開発環境をセットアップする
iOS ターゲット プラットフォーム向けの FireMonkey アプリケーションは、最初、Mac で使用
可能な iOS シミュレータでテストされます。テスト工程の後半では、iOS デバイス ターゲット
プラットフォームを使用するため、Mac に接続されたテスト用の iOS デバイスが必要になりま
す。RAD Studio では、デバッグおよびテスト用に iOS アプリケーションをデバイスに配置す
るために、プラットフォーム アシスタントを使用します。これは、Mac 上にインストールして
実行する必要があります。
このトピックでは、Mac に環境を構成した後で、開発環境をセットアップする手順を説明しま
す。
RAD Studio 環境のセットアップ
以下の手順で構成を行うと、RAD Studio での iOS 開発の速度を向上することができます。
Mac 用の接続プロファイルを作成する
1. [ツール|オプション...|環境オプション|接続プロファイル マネージャ]を開きます。
2. [追加...]をクリックします。
Embarcadero Technologies
21
3. [接続プロファイルの作成]ウィザードが開きます。接続プロファイルの名前を "My
Mac" などと指定します。
下図のように、ターゲット プラットフォームとして必ず[OS X]を選択したあと、
[次へ >>]をクリックします。
Embarcadero Technologies
22
4. [リモート マシン情報]ページで、ホストとなる Mac の名前または IP アドレス、使用
するポート番号(通常はデフォルト ポート 64211 で正常に動作)、パスワード(パス
ワードを使用する場合に必要)を設定します。
5. [接続テスト]をクリックし、接続プロファイルがエラーもなく正常に動作することを
確かめます("'<ホスト名>' (ポート <ポート番号>) への接続に成功しました" というメ
ッセージが表示されるはずです)。
Mac に接続された iOS デバイス用に開発システムに SDK を追加する
1. [ツール|オプション...|環境オプション|SDK マネージャ]を開きます。
Embarcadero Technologies
23
2. [追加...]をクリックします。
3. [新規 SDK の追加]ダイアログ ボックスで、[iOS デバイス]をプラットフォームに
選択します。
4. 接続するプラットフォーム([iOS デバイス]など)を選択します。
5. プラットフォームを選択すると、IDE によってプロファイル("My Mac" など)とター
ゲット プラットフォームで使用可能な SDK バージョンのリストが SDK バージョンのコ
ンボ ボックスに含められます。
Embarcadero Technologies
24
OK をクリックして、ダイアログを閉じます。
Embarcadero Technologies
25
関連項目
•
FireMonkey iOS アプリケーションを作成する
•
Mac と PC を連携させる
•
iOS デバイスでの iOS アプリケーションの実行
•
iOS シミュレータでの iOS アプリケーションの実行
•
FireMonkey プラットフォームに必要な準備
•
FireMonkey iOS アプリケーションの作成
•
Mac OS X のアプリケーション開発
•
FireMonkey アプリケーションの作成
•
Apple Developer(developer.apple.com ページ)
o
o
iOS Developer Library
iOS Developer Library: 入門
o
o
iOS Dev Center
iOS デバイスのプロビジョニング
o
iOS アプリケーションを App Store で配布する準備
o
iAd Network
Embarcadero Technologies
26
FireMonkey iOS アプリケーションを作成する
このトピックでは、iOS ターゲット プラットフォーム用の "Hello World" FireMonkey アプリケ
ーションの作成方法を説明します。
取りかかる前に
RAD Studio を使って iOS アプリケーションを開発するには、重要な構成手順を実行し
ておく必要があります。このチュートリアルでは、必要な以下のセットアップ手順がす
べて終了していることを前提としています。
詳細については、以下を参照してください。
•
Mac に開発環境をセットアップする
•
Windows PC に開発環境をセットアップする
ステップ 1:iOS 用 FireMonkey アプリケーションを新規作
成する
1. [ファイル|新規作成|FireMonkey モバイル アプリケーション - Delphi]を選択しま
す。
2. [空のアプリケーション]を選択します。
Embarcadero Technologies
27
FireMonkey モバイル フォーム デザイナに iOS アプリケーション用の新しいフォームが
表示されます。
ステップ 2:FireMonkey iOS フォームにコンポーネントを配
置する
FireMonkey iOS アプリケーションを作成するには、まず、ユーザー インターフェイスを設計
します。これは、デスクトップ プラットフォームがターゲットである場合の最初のステップと
同様です。IDE では、ユーザー インターフェイスを作成するための再利用可能なコンポーネン
トが数多く提供されています。
1. マウス ポインタを[ツール パレット]に移動し、[Standard]カテゴリのカテゴリ名
の横のプラス([+])アイコンをクリックして展開します。
2. TEdit コンポーネントを選択し、フォーム デザイナにドロップします。TEdit コンポー
ネントのインスタンスがフォーム上に表示されます。
Embarcadero Technologies
28
この手順を繰り返して、今度は TLabel コンポーネントと TButton コンポーネントをフォーム
に追加します。ボタンを選択し、[オブジェクト インスペクタ]で Text プロパティを「Say
Hello」に変更します。
これで 3 つのコンポーネントがフォーム デザイナ上にあるはずです。
これらのコンポーネントをフォーム デザイナ上に配置すると、IDE によって自動的にコンポー
ネントの名前が設定されます。
コンポーネントの名前を確認したり変更するには、フォーム デザイナでコンポーネントをクリ
ックし、その Name プロパティを[オブジェクト インスペクタ]および[構造]ビューで探し
ます。
Embarcadero Technologies
29
TButton コンポーネントの場合、コンポーネント名はデフォルトで Button1(あるいはそのア
プリケーションで作成した TButton の数に応じて Button2、Button3 など)に設定されます。
コンポーネントが配置されているフォームにも名前が付いています。FireMonkey モバイル フ
ォーム デザイナの背景部分を選択し、[オブジェクト インスペクタ]で Name プロパティを
選択します。フォームの名前 Form1(または Form2、Form3 など)が表示されています。また、
フォームの名前は[構造]ビューでも探すことができます。
フォーム デザイナ下部の[コード]タブを選択するか F12 キーを押すと、簡単にソース コー
ドに移動できます。フォーム デザイナとコード エディタの間の切り替えは、好きなときにいつ
でも行うことができます。
Embarcadero Technologies
30
コード エディタに移動すると、IDE によって生成されたソース コードを確認することができま
す。3 つのコンポーネント(Edit1、Label1、Button1)が定義されていることがわかります。
Embarcadero Technologies
31
ステップ 3:ユーザーがボタンをクリックしたときのイベン
ト ハンドラを Delphi で記述する
次に、TButton コンポーネントのイベント ハンドラを定義します。FireMonkey iOS アプリケー
ションのイベント ハンドラの定義は、デスクトップ アプリケーションでイベント ハンドラを
定義する場合と同じ方法で行うことができます。TButton コンポーネントの場合、最も典型的
なイベントはボタンのクリックです。
フォーム デザイナでボタンをダブルクリックすると、ボタン クリック イベントのイベント ハ
ンドラを実装するために使用できるスケルトン コードが、RAD Studio によって作成されます。
これで、Button1Click メソッドの begin 文と end 文の間に応答を実装できます。
次のコードでは、"Hello + <編集ボックスに入力された名前>" と書かれた小さなダイアログ ボ
ックスを表示するという応答を実装しています。
Label1.Text := 'Hello ' + Edit1.Text + ' !';
Delphi で文字列リテラルを囲む引用符は、ストレート単一引用符(つまり '文字列')でなけれ
ばなりません。また、プラス(+)記号を使用して文字列を連結することができます。文字列
内に単一引用符を含めたい場合には、文字列内に単一引用符を 2 つ続けて書くと、1 つの単一
引用符になります。
コードを入力していると、指定しなければならないパラメータの種類を示すツールチップ ヒン
トが表示されます。また、クラスでサポートされているメンバの種類もこのツールチップ ヒン
トで表示されます。
Embarcadero Technologies
32
ステップ 4:Mac(iOS シミュレータ)上で iOS アプリケー
ションをテストする
アプリケーションの実装が終わったので、これでアプリケーションを実行することができます。
IDE の[実行]ボタン(
)をクリックするか、F9 キーを押すか、RAD Studio のメイン
メニューで[実行|実行]を選択します。
FireMonkey iOS アプリケーションは、デフォルトで[iOS シミュレータ]ターゲット プラット
フォーム上で動きます。ターゲット プラットフォームは[プロジェクト マネージャ]で確認で
きます。
アプリケーションを実行すると、アプリケーションは Mac へ配置され、その後 Mac 上の iOS
シミュレータへ配置されます。このアプリケーションの場合、編集ボックスとボタンを持つフ
Embarcadero Technologies
33
ォームが表示されます。編集ボックスにテキストを入力し、[Say Hello]ボタンをクリックし
ます。
ステップ 5:接続された iOS デバイス上で iOS アプリケーシ
ョンをテストする
プロジェクトの新規作成前に「Mac に開発環境をセットアップする」および「Windows PC に
開発環境をセットアップする」で説明する手順を終えている場合には、これで、Mac に USB ケ
ーブルで接続された iOS デバイス上で iOS アプリケーションを実行することができます。
接続された iOS デバイス上で iOS アプリケーションを実行するには、プラットフォーム アシ
スタントによってその iOS デバイス上にアプリケーションが配置されるよう、まず[iOS デバ
イス]ターゲット プラットフォームを選択します。
Embarcadero Technologies
34
[iOS デバイス]ターゲット プラットフォームを選択したら、IDE の[実行]ボタンをクリッ
クするか、F9 キーを押すか、[実行|実行]を選択して、iOS アプリケーションを実行します。
iOS アプリケーションにコード署名をする許可を求めるダイアログが、Mac 上に表示される可
能性があります。[Always Allow]または[Allow]を選択してアプリケーションに署名してく
ださい。
その後、iOS デバイスに FireMonkey iOS アプリケーションが表示されるのを待ちます。
FireMonkey 起動画像($(BDS)\bin\Artwork\iOS にあります)が表示されるのを待ってください。
関連項目
•
さまざまなスタイルを持つボタン コンポーネントを iOS アプリケーションで使用する
•
iOS モバイル アプリケーション開発
•
Mac OS X のアプリケーション開発
•
iOS サンプル コード
Embarcadero Technologies
35
さまざまなスタイルを持つボタン コンポーネント
を iOS アプリケーションで使用する
FireMonkey iOS アプリケーションのボタン
FireMonkey にはさまざまな種類のボタンが定義されていて、どの種類のボタンも以下の説明と
同じ手順で使用できます。FireMonkey のボタンには、TButton や TSpeedButton などがありま
す。
以下は、ユーザー インターフェイスのさまざまな部分のボタン コンポーネントにさまざまなス
タイルを適用した例です。
•
フォーム上のボタン:
o
o
•
ナビゲーション バー上のボタン(ナビゲーション バーはツールバーと呼ぶこともありま
す)
o
o
o
o
o
o
Embarcadero Technologies
36
ボタン コンポーネントのルック アンド フィールを定義する
FireMonkey モバイル デザイナに新しいボタンを配置したら、[オブジェクト インスペクタ]
を使って、選択したコンポーネントの重要なプロパティを指定することができます。
コンポーネント(この場合はボタン)を選択し、以下のような一部のプロパティの値を参照し
たり変更します。
•
Text プロパティの値を更新して、ボタン表面に表示されるテキストを変更します。
•
Position.X プロパティおよび Position.Y プロパティの値を変更します(またはマウスを
使ってコンポーネントをドラッグします)。
•
Height プロパティや Width プロパティの値を変更します(またはマウスを使ってコン
ポーネントの縁をドラッグします)。
•
StyleLookup プロパティの下向き矢印をクリックします。
StyleLookup のドロップダウン リストで、あらかじめ定義されたスタイルの中からコン
ポーネントの使い方に応じたものを選択することができます。
Embarcadero Technologies
37
ボタン コンポーネントを使用してセグメント コントロール
を作成する
FireMonkey では、ボタン コンポーネントを使ってセグメント コントロールを定義しています。
ユーザーはこの機能を使用して複数の選択肢から 1 つの値を選択することができます。
セグメント コントロールを定義する手順は以下のとおりです。
1. [ツール パレット]から TSpeedButton コンポーネントを 3 つ配置します。マウスを
使って TSpeedButton コンポーネントを隣り合わせに配置します。
Embarcadero Technologies
38
2. 1 番目のコンポーネントを選択し、StyleLookup プロパティを segmentedbuttonleft に
変更します。
3. 2 番目のコンポーネントを選択し、StyleLookup プロパティを segmentedbuttonmiddle
に変更します。
4. 3 番目のコンポーネントを選択し、StyleLookup プロパティを segmentedbuttonright
に変更します。これで、3 つすべてのボタンがセグメント コントロールとして表示され
ます。
5. 各コンポーネントを選択し、Text プロパティを任意の値に変更します。
6. クリックして 3 つのボタンをドラッグし、これら 3 つのコンポーネントを選択します。
7. GroupName プロパティを LocationSegments などの一意の名前に設定します。
Embarcadero Technologies
39
8. コンポーネントの 1 つがデフォルトで押された状態に表示されるよう指定するには、1
つのコンポーネントの IsPressed プロパティを True に設定します。
Embarcadero Technologies
40
ツールバー コンポーネント上にスコープ バーを作成する
ツールバー上にセグメント コントロールを定義することができます。これはスコープ バーとも
呼ばれるもので、検索範囲を制御するために使用できるセグメント コントロールです。
先ほどの手順と同じ TSpeedButton コントロールを使用しますが、StyleLookup プロパティに
は以下の値を設定します。
toolbuttonleft
toolbuttonmiddle
toolbuttonright
関連項目
•
FireMonkey iOS アプリケーションを作成する
•
FMX.StdCtrls.TButton
FMX.Controls.TStyledControl.StyleLookup
FMX.StdCtrls.TToolBar
•
•
Embarcadero Technologies
41
iOS アプリケーションでカレンダー コンポーネン
トを使用して日付を選択する
FireMonkey iOS アプリケーションのカレンダー
FireMonkey では、TCalenderEdit コンポーネントを使って、iOS ターゲット プラットフォーム
用のカレンダー コンポーネントや日付選択コンポーネントをラップしています。
TCalenderEdit コンポーネントは、次のような単純な手順で簡単に使用することができます。
1. [ツール パレット]で TCalenderEdit コンポーネントを選択し、そのコンポーネントを
FireMonkey モバイル フォーム デザイナにドロップします。[ツール パレット]でコン
ポーネントを探すには、検索ボックス(
)に最初の数文字("Cale")を入力します。
コンポーネントをドロップすると、モバイル フォーム デザイナに TCalenderEdit コン
ポーネントが表示されます。
Embarcadero Technologies
42
2. 基本的にそれだけです。iOS シミュレータまたは接続した iOS デバイスの上でアプリケ
ーションを実行します。TCalenderEdit をタップするとカレンダー コントロールが現れ、
日付を選択することができます。
ユーザーによる日付変更のイベント ハンドラを実装する
ユーザーが日付を変更すると、OnChange イベントが発生します。OnChange イベントのイベ
ント ハンドラを実装して、ユーザーのアクションに応答することができます。
OnChange イベント ハンドラを実装するには:
1. TCalenderEdit コンポーネントを選択します。
2. [オブジェクト インスペクタ]で[イベント]ページを開き、OnChange の隣の空の
領域をダブルクリックします。
3. 次のようにコードを記述します。
procedure TForm25.CalendarEdit1Change(Sender: TObject);
begin
ShowMessage(FormatDateTime('dddddd', CalendarEdit1.Date));
end;
このコードでは、選択した日付を示すメッセージ ダイアログを表示します。FormatDateTime
関数は、選択した日付を指定された形式(この場合の dddddd では長い形式の日付が返されま
す)に変換します。
Embarcadero Technologies
43
関連項目
•
さまざまなスタイルを持つボタン コンポーネントを iOS アプリケーションで使用する
•
iOS アプリケーションでコンボ ボックス コンポーネントを使用してリストから項目を
選択する
•
日付および時刻のサポート
•
型変換ルーチン
Embarcadero Technologies
44
iOS アプリケーションでコンボ ボックス コンポ
ーネントを使用してリストから項目を選択する
FireMonkey iOS アプリケーションで選択コントロールを実
装する
iOS プラットフォームでは、FireMonkey は選択コンポーネントを TComboBox コンポーネント
でラップしています。
選択コントロールと選択対象のリスト項目を定義するには:
1. [ファイル|新規作成|FireMonkey モバイル アプリケーション - Delphi|空のアプリ
ケーション]を選択します。
2. [ツール パレット]で TComboBox コンポーネントを選択し、FireMonkey モバイル フ
ォーム デザイナ上にドロップします。
TComboBox を探すには、[ツール パレット]の検索ボックスに最初の数文字
("Com")を入力します。
Embarcadero Technologies
45
3. コンポーネントをドロップすると、フォーム デザイナに TComboBox コンポーネント
が表示されます。
TComboBox コンポーネントを右クリックし、[項目エディタ...]を選択します。
4. [項目の追加]を何度かクリックして、項目を定義します。
5. [構造]ビューで、ListBoxItem1(リスト内の最初の項目)を選択します。
6. [オブジェクト インスペクタ]で、ListBoxItem1 の Text プロパティを編集します。
この例(米国の 50 の州)では、リスト内の最初の項目は "Alabama" です。
Embarcadero Technologies
46
7. 他の項目も同様に編集します(Alaska、Arizona、Arkansas、California、Colorado な
ど)。
8. [iOS シミュレータ]と[iOS デバイス]のどちらかのターゲット プラットフォームで
アプリケーションを実行します。
TComboBox をタップすると選択コントロールが現れ、項目を選択することができます。
コードを使って項目のリストを構築する
コードを使って項目のリストを構築するには、Add メソッドを使用します。
procedure TForm27.FormCreate(Sender: TObject);
begin
ComboBox1.Items.Add('Alabama');
ComboBox1.Items.Add('Alaska');
ComboBox1.Items.Add('Arizona');
ComboBox1.Items.Add('Arkansas');
ComboBox1.Items.Add('California');
// Other states can be listed here
ComboBox1.Items.Add('Virginia');
ComboBox1.Items.Add('Washington');
ComboBox1.Items.Add('West Virginia');
ComboBox1.Items.Add('Wisconsin');
Embarcadero Technologies
47
ComboBox1.Items.Add('Wyoming');
end;
特定の項目を表示する
現在選択されている項目は、ItemIndex プロパティで示されます。ItemIndex は整数値であり、
ゼロから始まるインデックスを使って指定されます(つまり最初の項目がゼロ)。
5 番目の項目(以下のサンプル コードでは "California")を選択した状態でリストを表示する
には、ItemIndex を次のように指定します。
procedure TForm27.FormCreate(Sender: TObject);
begin
ComboBox1.Items.Add('Alabama');
ComboBox1.Items.Add('Alaska');
ComboBox1.Items.Add('Arizona');
ComboBox1.Items.Add('Arkansas');
ComboBox1.Items.Add('California');
// Other states can be listed here
// Index of 5th item is "4"
ComboBox1.ItemIndex := 4;
end;
インデックスの値がわからない場合には、次のように IndexOf メソッドを使用すると値を知る
ことができます。
procedure TForm27.FormCreate(Sender: TObject);
begin
ComboBox1.Items.Add('Alabama');
ComboBox1.Items.Add('Alaska');
ComboBox1.Items.Add('Arizona');
ComboBox1.Items.Add('Arkansas');
ComboBox1.Items.Add('California');
// Other states can be listed here
Embarcadero Technologies
48
ComboBox1.ItemIndex := ComboBox1.Items.IndexOf('California');
end;
ユーザーによる選択のイベント ハンドラを実装する
ユーザーが項目を選択すると、OnChange イベントが発生します。OnChange イベントのイベ
ント ハンドラを実装して、ユーザーのアクションに応答することができます。
OnChange イベント ハンドラを実装するには:
1. TComboBox コンポーネントを選択します。
2. [オブジェクト インスペクタ]で[イベント]ページを開き、OnClick の隣の空の領域
をダブルクリックします。
3. コード エディタが開きます。次のようにコードを記述します。
procedure TForm27.CalendarEdit1Change(Sender: TObject);
begin
ShowMessage(Format('Item %s at Index %d was selected. ',
[ComboBox1.Selected.Text, ComboBox1.ItemIndex]));
end;
このイベント ハンドラでは、選択された項目を示すメッセージ ダイアログを表示します。
Format 関数は、書式文字列と引数の配列から書式設定された文字列を組み立てて返します。
Embarcadero Technologies
49
関連項目
•
iOS アプリケーションでカレンダー コンポーネントを使用して日付を選択する
•
iOS アプリケーションでタブ コンポーネントを使用してページを表示する
•
iOS モバイル アプリケーション開発
•
Mac OS X のアプリケーション開発
Embarcadero Technologies
50
iOS アプリケーションで Web ブラウザ コンポー
ネントを使用する
iOS プラットフォーム上の FireMonkey では、Web ブラウザ コンポーネントは TWebBrowser
コンポーネントとしてラップされています。このトピックでは、iOS 用の簡単な FireMonkey
Web ブラウザ アプリケーションの作成方法を説明します。
ステップ 1:ユーザー インターフェイスを設計する
1. [ファイル|新規作成|FireMonkey モバイル アプリケーション - Delphi|空のアプリ
ケーション]を選択します。
2. [ツール パレット]で TToolBar コンポーネントを選択し、FireMonkey モバイル フォ
ーム デザイナにドロップします。TToolBar を探すには、[ツール パレット]の検索ボ
ックスに数文字("tool" など)を入力します。
Embarcadero Technologies
51
3. コンポーネントをドロップすると、TToolBar コンポーネントがモバイル フォーム デザ
イナの上部に表示されます。
4. [ツール パレット]で TButton コンポーネントを選択し、ツールバー上にドロップし
ます。
5. モバイル フォーム デザイナでボタン コンポーネントを選択し、[オブジェクト インス
ペクタ]の StyleLookup プロパティで priortoolbuttonbordered を選択します。
TButton の StyleLookup の値を priortoolbuttonbordered に設定すると、iOS スタイル
の "戻る" ボタンのラベルが追加されます。
FireMonkey iOS アプリケーションでのスタイルの選択方法の詳細は、「さまざまなス
タイルを持つボタン コンポーネントを iOS アプリケーションで使用する」を参照して
ください。
6. [ツール パレット]で TEdit コンポーネントを選択し、ツールバー上にドロップします。
編集コントロールの幅がツールバーの領域いっぱいになるようにサイズを調整します。
Embarcadero Technologies
52
7. [ツール パレット]で TWebBrowser コンポーネントを選択し、フォーム上にドロップ
します。
8. モバイル フォーム デザイナで Web ブラウザ コンポーネントを選択し、[オブジェク
ト インスペクタ]の Align プロパティに alClient を選択します。
上記の手順が済むと、フォームは次の図のように表示されているはずです。
ステップ 2:ユーザーが編集コントロールで URL を変更する
と Web ページを開くようイベント ハンドラを記述する
デスクトップ プラットフォームとは異なり、モバイル デバイスでは、次の図のように仮想キー
ボードを使用してテキストを入力します。ユーザーが "Done" または "Return" をクリックする
とアクションが終了します。
Embarcadero Technologies
53
FireMonkey では、ユーザーが行うアクションのほとんどに対応できるよう、多様なイベント
ハンドラが用意されています。"Done" ボタンが選択されると、FireMonkey フレームワークに
よって TEdit コントロールに OnChange イベントが送信されます。それに対して、"Return" ボ
タンには特定のイベントが存在しません。このセクションでは、両方のシナリオに対応するイ
ベント ハンドラを実装します。
Web ページを開くための共通メソッドを実装する
イベント ハンドラを実装する前に、まず、編集コントロールの Text プロパティを基に Web ペ
ージを開く共通メソッドを実装します。
1. コード エディタで以下の新しい行を作成します。
{ private 宣言 } の後に procedure OpenURL;
Embarcadero Technologies
54
2. Ctrl+Shift+C を押して、ファイル末尾にプレースホルダを作成します。
3. OpenURL メソッドを次のコードのように実装します。
OnChange イベントのイベント ハンドラを実装する
1. モバイル フォーム デザイナで編集コントロールを選択し、[オブジェクト インスペク
タ]([イベント]タブ)で OnChange イベントの隣の空白領域をダブルクリックし
てイベント ハンドラを作成します。
[オブジェクト インスペクタ]によって Edit1Change というイベント ハンドラが新規
作成されます。
2. 以下のコードを追加して、イベント ハンドラを完成させます。
Embarcadero Technologies
55
Enter キーをサポートするイベント ハンドラを実装する
Enter キーには特定のイベントが定義されていません。それでも、OnKeyDown イベントを使用
することで、そのようなイベントを監視できます。
OnKeyDown では、イベント ハンドラのいくつかのパラメータから、押されたキーの情報がわ
かります。このイベントは次のように実装することができます。
"戻る" ボタンのイベント ハンドラを実装する
Web ブラウザの戻るボタンの実装は、Web ブラウザ コンポーネントの GoBack メソッドを呼
び出すだけです。
これで、この Web ブラウザ アプリケーションの基本動作の実装が終わりました。iOS シミュ
レータまたは iOS デバイスでアプリケーションを実行してみます。
Embarcadero Technologies
56
ステップ 3:Web ブラウザ アプリケーションに適したキーボ
ードを選択する
初めての Web ブラウザ アプリケーションを実行すると、仮想キーボードが最適化されていな
いことに気付きます。
iOS では、次のようないくつかの仮想キーボードが用意されています。
vktAlphabet
vktDefault
vktEmailAddress
vktNamePhonePad
vktNumberPad
vktNumbersAnd
Punctuation
vktPhonePad
vktURL
編集コントロールの KeyboardType プロパティで、適切な仮想キーボードとして vktURL を選
択します。
Embarcadero Technologies
57
関連項目
•
iOS アプリケーションでコンボ ボックス コンポーネントを使用してリストから項目を
選択する
•
iOS アプリケーションでタブ コンポーネントを使用してページを表示する
•
TWebBrowser
TToolBar
TButton
TEdit
KeyboardType
StyleLookup
•
•
•
•
•
Embarcadero Technologies
58
iOS アプリケーションでタブ コンポーネントを使
用してページを表示する
FireMonkey iOS アプリケーションのタブ
タブは FMX.TabControl.TTabControl で定義されます。これは、複数のタブ ページを保持でき
るコンテナです。
•
それぞれのタブ ページには、UI 要素として任意のコントロールを含むことができます。
•
これらのページのタブを非表示にしたり、タブを表示せずにページを移動することがで
きます。
タブごとに、定義済みアイコンやカスタムアイコン、テキスト ラベルを指定することができま
す。
また、コントロールの上下どちらにでもタブを配置することができます。
フォーム デザイナを使用してタブ ページを設計する
アプリケーションにタブ ページを作成するには、TTabControl コンポーネントを使用します。
手順は以下のとおりです。
1. [ファイル|新規作成|FireMonkey モバイル アプリケーション - Delphi|空のアプリ
ケーション]を選択して HD FireMonkey モバイル アプリケーションを作成します。
iPhone 用のデフォルト ターゲット プラットフォーム([iOS シミュレータ])を使用
します。
2. [ツール パレット]から TTabControl を選択します。
Embarcadero Technologies
59
3. TTabControl をドロップすると、空のタブ コントロールが FireMonkey モバイル フォー
ム デザイナに表示されます。
4. 通常、アプリケーションでタブ コントロールを使用する場合には、全画面を使ってペー
ジを表示します。そのためには、タブ コントロールのデフォルトの位置揃えを変更する
必要があります。[オブジェクト インスペクタ]で、タブ コントロールの Align プロ
パティを alClient に変更します。
Embarcadero Technologies
60
5. タブ コントロールを右クリックし、コンテキスト メニューから[項目エディタ...]を選
択します。
6. [項目の追加]を 3 回クリックします。すると、次の図のようにタブ項目のインスタン
スが 3 つ作成されます。ダイアログ ボックスを閉じます。
7. FireMonkey モバイル フォーム デザイナで、最初のタブ項目を選択し、その
StyleLookup プロパティを tabitembookmarks に変更します。
Embarcadero Technologies
61
8. 各ページには任意のコンポーネントを配置することができます。別のページに移動する
には、フォーム デザイナ上で対象のタブをクリックするか、[オブジェクト インスペ
クタ]で ActiveTab プロパティを変更します。
9. タブの位置を変更するには、タブ コントロール コンポーネントの TabPosition プロパ
ティを選択します。各タブについて、TabPosition プロパティ用に以下のいずれかの値
を[オブジェクト インスペクタ]で選択できます。
Embarcadero Technologies
62
tpTop
tpBottom
tpDots
tpNone
タブが上部に表示され
タブが下部に表示され
タブは表示されませ
タブやドットは、設計
ます。
ます。
ん。ただし、別のペー
時には表示されますが
ジが存在することを示
実行時には表示されま
すドットまたは省略記
せん。ページの変更
号([...])が表示さ
は、コードまたはアク
れます。
ションでしか行うこと
ができません。
タブのカスタム アイコンを使用する
タブ ページでは、カスタム アイコンやカスタム テキストを使用することができます。手順は
以下のとおりです。
1. タブ コントロールを配置し、位置揃え(Align プロパティ)を設定し、タブ コントロー
ル上に複数のタブを作成します。
Embarcadero Technologies
63
2. タブを選択し、[オブジェクト インスペクタ]に移動して TTabItem の CustomIcon プ
ロパティの Bitmap フィールドで参照ボタン([...])を選択します。
3. ドロップダウン メニューから[編集...]を選択します。
4. [ビットマップ エディタ]で[読み込み...]ボタンをクリックし、PNG ファイルを選択
します。推奨サイズは、標準解像度の場合には 30x30 ピクセル、高解像度の場合には
60x60 ピクセルです(BitmapHiRes アイコンは次のステップで設定します)。
Embarcadero Technologies
64
5. [ビットマップ エディタ]を閉じ、[オブジェクト インスペクタ]に戻って
CustomIcon の BitmapHiRes(high-resolution)フィールドで使用したいアイコンを選
択します。
6. [オブジェクト インスペクタ]で StyleLookup プロパティに tabitemcustom を選択し
ます。
7. Text プロパティでタブ上のテキストを変更します。
Embarcadero Technologies
65
このチュートリアルで使用しているカスタム グリフは、$(BDS)\Images\GlyFX ディレクトリ
にあります。
カスタム アイコンを定義すると、FireMonkey フレームワークによって、指定した .png ファイ
ルから選択時の画像と非選択時の(淡色表示の)画像が生成されます。この変換は、ビットマ
ップ データのアルファ チャネルを使って行われます。たとえば、次のように生成されます。
元の画像
選択時の画像
非選択時の画像
タブ コントロール内のコントロールを定義する
既に説明したように、それぞれのタブ ページには、任意の数のコントロール(別のタブ コント
ロールでもかまいません)を含むことができます。その場合には、さまざまなタブ ページを
[構造]ビューで簡単に参照したり管理することができます。
Embarcadero Technologies
66
実行時にページを変更する
ユーザーがタブをタップしたときに
タブが表示されている(TabPosition プロパティが tpNone 以外に設定されている)場合は、エ
ンド ユーザーがタブをタップすると、それだけでページが切り替わります。
Embarcadero Technologies
67
アクションとアクション リストを使用して
アクションは、ユーザー インターフェイスの 1 つ以上の要素(メニュー コマンド、ツールバ
ー ボタン、コントロールなど)に対応します。アクションには 2 つの機能があります。
•
ユーザー インターフェイス要素に共通のプロパティを表します(コントロールが有効か、
チェック ボックスがオンになっているかなど)。
•
コントロールが起動したときに応答します(アプリケーション ユーザーがボタンをクリ
ックした、メニュー項目を選択したなど)。
ユーザーがボタンをクリックすることで別のタブ ページに移動できるようにする手順は次のと
おりです。
1. FireMonkey モバイル アプリケーションにタブ コントロールを配置し、そこに複数のタ
ブ項目(TabItem1、TabItem2、TabItem3 など)を追加します。
2. [ツール パレット]からフォームに TButton を追加し、さらに ActionList コンポーネン
トを追加します。
Embarcadero Technologies
68
3. [オブジェクト インスペクタ]でボタン コンポーネントを選択し、Action プロパティ
のドロップダウン メニューから[標準アクションの新規作成|タブ|
TChangeTabAction]を選択します。ユーザーがこのボタンをクリックすると、ここで
定義したアクションが実行されます(タブ ページが切り替わります)。
4. [構造]ビューで ChangeTabAction1 を選択し、[オブジェクト インスペクタ]で
Tab プロパティに TabItem2 を選択します。これで TabItem2 にリンクされるため、こ
のアクションでページを TabItem2 に変更することができます。
Embarcadero Technologies
69
5. 前のステップが終わると、ボタンのキャプション(Text プロパティ)が自動的に
"Security に移動" に変化しています(この例では TabItem2 のキャプションが
"Security" であるため)。新しいキャプション テキストに合わせてボタンのサイズを変
更するか、ChangeTabAction1 コンポーネントの CustomText プロパティを次のように
変更します。
Embarcadero Technologies
70
6. ChangeTabAction では、ページ間の移行を示すスライド アニメーションもサポートし
ています。このアニメーションを使用するには、Transition プロパティを ttSlide に設定
します。
ソース コードによって
次の 3 つのどの方法を使っても、ソース コードからアクティブなタブ ページを変更すること
ができます。
•
TTabItem のインスタンスを ActiveTab プロパティに代入します。
TabControl1.ActiveTab := TabItem1;
•
TabIndex プロパティを別の値に変更します。TabIndex プロパティはゼロから始まる整
数値です(0 と TabControl1.TabCount - 1 の間の任意の数値を指定することができ
ます)。
TabControl1.TabIndex := 1;
•
ChangeTabAction が定義されている場合には、アクションをコードから実行すること
もできます。
// You can set the target at run time if it is not defined yet.
ChangeTabAction1.Tab := TabItem2;
// Call the action
ChangeTabAction1.Execute;
Embarcadero Technologies
71
関連項目
•
さまざまなスタイルを持つボタン コンポーネントを iOS アプリケーションで使用する
•
iOS アプリケーションで Web ブラウザ コンポーネントを使用する
Embarcadero Technologies
72
iOS アプリケーションでリスト ボックス コンポ
ーネントを使用してテーブル ビューを表示する
iOS プラットフォームでは、FireMonkey は FMX.ListBox.TListBox コンポーネントを使用して
iOS スタイルのテーブル ビューを表示します。たとえば次のようなリスト ボックスです。
このチュートリアルでは、FireMonkey iOS アプリケーションでテーブル ビューの項目を作成
する基本的な手順を説明します。
リスト ボックス コンポーネントに項目を作成する
1. [ファイル|新規作成|FireMonkey モバイル アプリケーション - Delphi|空のアプリ
ケーション]を選択します。
2. [ツール パレット]で TListBox コンポーネントを選択し、FireMonkey モバイル フォ
ーム デザイナ上にドロップします。TListBox を探すには、[ツール パレット]の検索
ボックスに数文字("tlist" など)を入力します。
Embarcadero Technologies
73
3. モバイル フォーム デザイナで TListBox コンポーネントを選択し、[オブジェクト イン
スペクタ]の Align プロパティに alClient を選択します。
4. FireMonkey モバイル フォーム デザイナで TListBox コンポーネントを右クリックし、
[項目エディタ...]を選択します。
Embarcadero Technologies
74
5. [項目デザイナ]で[項目の追加]ボタンを何度かクリックし、リスト ボックスにいく
つかの項目を追加します。
6. [項目デザイナ]を閉じます。これで TListBox コンポーネント上にリスト ボックス項
目が表示されています。たとえば次の図のようになっています。
ヘッダーを追加する
以下の手順で TListBox コンポーネントのヘッダーを定義することができます。
1. FireMonkey モバイル フォーム デザイナで TListBox コンポーネントを右クリックし、
[項目の追加|TListBoxHeader]を選択します。
Embarcadero Technologies
75
2. [ツール パレット]で TLabel コンポーネントを選択し、追加した TListBoxHeader コ
ンポーネントの上にドロップします。
3. [オブジェクト インスペクタ]で、TLabel コンポーネントのプロパティを次のように
変更します。
プロパティ
値
Align
alClient
StyleLookup
toollabel
TextAlign
taCenter
Text
(任意のテキスト値)
Embarcadero Technologies
76
リストにグループ ヘッダー/フッターを追加する
以下の手順で TListBox の項目にグループ ヘッダーおよびグループ フッターを定義することが
できます。
1. FireMonkey モバイル フォーム デザイナで TListBox コンポーネントを右クリックし、
[項目エディタ...]を選択します。
2. [項目デザイナ]でドロップダウン リストから TListBoxGroupHeader を選択し、[項
目の追加]をクリックします。
3. ドロップダウン リストから TListBoxGroupFooter を選択し、[項目の追加]を選択し
ます。
4. 項目のリストで ListBoxGroupHeader1 を選択し、その項目がリストの先頭になるまで
上向き矢印ボタンを何度かクリックします。
Embarcadero Technologies
77
5. ダイアログ ボックスを閉じます。これで、TListBox コンポーネントにグループ ヘッダ
ーとグループ フッターが追加されています。
リスト項目を別のグループ化された項目として表示する
リスト ボックスの項目は、単純なリストとして表示することも、グループ化されたリストとし
て表示することもできます。どちらにするかは GroupingKind プロパティと StyleLookup プロ
パティによって決まり、次の図のように表示されます。
項目を単純なリストとして表示
gsPlain = GroupingKind プロパティの値
listboxstyle = StyleLookup プロパティの値
項目をグループ化されたリストとして表示
gsGrouped = GroupingKind プロパティの値
transparentlistboxstyle = StyleLookup プロパ
ティの値
TListBox コンポーネントのこのようなスタイルは、[オブジェクト インスペクタ]で選択する
ことができます。
Embarcadero Technologies
78
リスト ボックス項目にチェック ボックスなどのアクセサリ
を追加する
TListBox 内の各項目には、ItemData.Accessory プロパティを使ってチェック マークなどのアク
セサリを設定することができます。次の図は、ItemData.Accessory に割り当てることができる
値と、表示されるアクセサリを示したものです。
フォーム デザイナでリスト ボックス項目を選択すると、[オブジェクト インスペクタ]で
Accessory プロパティを選択することができます。
リスト ボックス項目にアイコンを追加する
リスト ボックス コンポーネント内の各項目には、アイコンとしてビットマップ データを表示
することができます。これは ItemData.Bitmap プロパティで指定します。
Embarcadero Technologies
79
フォーム デザイナでリスト ボックス項目を選択すると、[オブジェクト インスペクタ]で
Bitmap プロパティを選択することができます。
項目に詳細情報を追加する
リスト ボックス コンポーネント上の各項目に、補足的なテキスト情報を追加することができま
す。
補足テキストは ItemData.Detail プロパティに指定します。詳細テキストの表示場所は
StyleLookup プロパティで選択します。次の表を参照してください。
StyleLookup プロパティ
ルック アンド フィール
listboxitemnodetail
listboxitembottomdetail
listboxitemrightdetail
listboxitemleftdetail
コードからリスト ボックスに項目を追加する
通常の項目をリスト ボックスに追加するには、次のコードのように、Items.Add メソッドを呼
び出すだけです。
Embarcadero Technologies
80
ListBox1.Items.Add('Text to add');
単純な項目以外のものを作成する場合や他のプロパティを指定したい場合には、まず項目のイ
ンスタンスを作成し、それからリスト ボックスに追加します。
この後のコードでは、図に示すような項目をリスト ボックスに追加しています。
procedure TForm40.FormCreate(Sender: TObject);
var
c: Char;
i: Integer;
Buffer: String;
ListBoxItem : TListBoxItem;
ListBoxGroupHeader : TListBoxGroupHeader;
begin
ListBox1.BeginUpdate;
for c := 'a' to 'z' do
begin
// Add header ('A' to 'Z') to the List
ListBoxGroupHeader := TListBoxGroupHeader.Create(ListBox1);
ListBoxGroupHeader.Text := UpperCase(c);
ListBox1.AddObject(ListBoxGroupHeader);
// Add items ('a', 'aa', 'aaa', 'b', 'bb', 'bbb', 'c', ...) to the list
for i := 1 to 3 do
begin
// StringOfChar returns a string with a specified number of repeating
characters.
Buffer := StringOfChar(c, i);
Embarcadero Technologies
81
// Simply add item
// ListBox1.Items.Add(Buffer);
// or, you can add items by creating an instance of TListBoxItem by yourself
ListBoxItem := TListBoxItem.Create(ListBox1);
ListBoxItem.Text := Buffer;
// (aNone=0, aMore=1, aDetail=2, aCheckmark=3)
ListBoxItem.ItemData.Accessory := TListBoxItemData.TAccessory(i);
ListBox1.AddObject(ListBoxItem);
end;
end;
ListBox1.EndUpdate;
end;
検索ボックスを追加する
リスト ボックスに検索ボックスを追加することができます。検索ボックスがあると、ユーザー
は次の図のように、長いリストから選択肢を簡単に絞り込むことができます。
•
リスト ボックス コンポーネントに検索ボックスを追加するには、TListBox コンポーネ
ントを右クリックし、コンテキスト メニューから[項目の追加|TSearchBox]を選択
すればよいだけです。
Embarcadero Technologies
82
関連項目
•
•
FMX.ListBox.TListBox
さまざまなスタイルを持つボタン コンポーネントを iOS アプリケーションで使用する
•
iOS アプリケーションで Web ブラウザ コンポーネントを使用する
•
iOS アプリケーションでタブ コンポーネントを使用してページを表示する
Embarcadero Technologies
83
iOS アプリケーションでレイアウトを使用してフ
ォームのさまざまなサイズや向きを調整する
このチュートリアルでは、フォーム ファクタ(iPhone や iPad など)ごとに異なるフォームを
使用するのではなく、1 つの共通フォームをさまざまなフォーム ファクタに使用するための一
般的な方法を説明します。
デバイス上でアプリケーションを実行しなくても、FireMonkey モバイル フォーム デザイナで
ユーザー インターフェイスのプレビューを確認することができます。右上のドロップダウンで
デバイスや方向を変更すればよいだけです。
FireMonkey コンポーネントはどれも所有者、親、子を持つ
ことができる
まず、すべての FireMonkey コンポーネントに所有者、親、子という概念があります。コンポ
ーネントをフォーム上に配置すると、フォームがそのコンポーネントの所有者および親になり
ます。
コンポーネント(ボタン、ラベルなど)を別のコンポーネント(ツールバーなど)に追加する
と、ツールバーがボタンやラベルなどの親および所有者になります。この親子関係は、[構造]
ビューにツリー形式の図として表示されます。
子のレイアウトは、親に対する相対的な値で定義されます。次の図の Label1 は Toolbar1 の子
であり、Label1 のレイアウトは Toolbar1 に対して相対的に決められています。
Embarcadero Technologies
84
FireMonkey コンポーネントのレイアウト関連共通プロパテ
ィを使用する
Align プロパティを使用する
コントロールの Align プロパティによって、初期表示の際および親がサイズ変更された際に、
親の 4 辺または中心に合わせて自動的に位置やサイズが変更されるかどうかが決まります。
Align プロパティのデフォルト値は alNone です。これは、自動計算が行われず、コントロー
ルが元の位置にとどまることを意味します。
Align プロパティで一般的に使われる値は次のとおりです(青で示す部分が子の領域です)。
alNone
alTop
alBottom
alLeft
alRight
alCenter
alClient
1 つのコンポーネントの Align の値を alTop、alBottom、alLeft、または alRight にすると、他
のコンポーネントの Align プロパティは残りの領域を使用することになります。
残りの領域(alClient)のサイズや形も、デバイスの方向やフォーム ファクタ(iPhone または
iPad)によって変化します。
次の図は、2 つのコンポーネントに alTop を、1 つのコンポーネントに alClient を指定したと
きの、横方向と縦方向のレイアウトを示しています。
Embarcadero Technologies
85
Margins プロパティを使用する
マージンを指定すると、親によって自動配置されるコントロールの間を離すことができます。
次の図では、右側のコンポーネント(alClient)に Margins プロパティが指定されていて、コ
ンポーネントの周りに空間が確保されます。
Padding プロパティを使用する
パディングを指定すると、親のコンテンツ ボックスの内側に空間が確保されます。[オブジェ
クト インスペクタ]で、Padding に以下のそれぞれの値(ピクセル単位)を設定することがで
きます。
Left
Right
Bottom
Top
次の図では、親コンポーネント(2 つの領域を含む)に Padding プロパティを指定して、親コ
ンポーネントの内側に空間を確保しています。
Embarcadero Technologies
86
Anchors プロパティを使用する
コントロールがその親の端から特定の距離に位置を保たなければならない場合や、自分の端と
親の端との距離を当初の値に保ちながら拡大しなければならない場合に、アンカーが必要にな
ります。アンカーが設定されたコントロールは、コンテナの辺に '固定' され、指定された場合
は伸び縮みします。
編集コントロールの Anchors プロパティ
ツールバーの上に編集コントロールを置く場合、編集コントロールの右端とフォーム(ツール
バー)の端との距離を一定に保ちたいことがあります。Anchors を使用すると、親の辺に対し
て固定の位置にコントロールを保つよう指定することができます。
編集コントロールをツールバー(親)に対して同じ位置に保ちたい場合には、Anchors プロパ
ティを akLeft, akTop, akRight に設定します。ツールバーのサイズを変更すると、Anchors の
設定に応じて編集コントロールのサイズも変更されます。
ボタン コントロールの Anchors プロパティ
ツールバーの右端にボタン コントロールを置く場合、ボタンの右端とフォームの端との距離を
一定に保ちたいことがあります。ただし、ボタン コントロールの左端とフォームの左端の距離
は一定に保ちたくありません。この場合には、Anchors プロパティを akTop, akRight に設定
する(akLeft の選択を解除する)と、ボタン コントロールの上および右がツールバー(親)に
対して同じ距離を保つようになります。
Embarcadero Technologies
87
TLayout コンポーネントを使用する
TLayout は、実行時には表示されないコンポーネントです。これを使用して子コントロールを
集合にまとめ、全体として操作することができます。たとえば、レイアウトの Visible プロパテ
ィを設定すると、コントロールの集合の可視性を一度に設定できます。TLayout によって、子
のプロパティが自動的に設定されることはありません。
選択したコントロールを TLayout の子にするには、[構造]ビューを使用します。
移動したいコントロールを選択して強調表示します。その一連のコントロールをドラッグして、
親となるコントロールの上にドロップします。これで、[構造]ビューを見ると、コントロー
ルの集合が新しい親の子になっています。
1. 元の状態
2. 移動対象のコントロ
ールを選択
3. 親の上にドロップ
TLayout の Align、Padding、Margins、Anchors などのプロパティを使用して、特定の領域の
レイアウトを定義することができます。TLayout コンポーネントは、HTML の DIV タグと同じ
ように使用できます。
多くの項目を含むインターフェイスの扱い:TVertScrollBox
コンポーネントを使用する
ユーザーがユーザー インターフェイスをスクロールする必要が生じる可能性があるため、フォ
ームに多くの項目を持たせすぎることは一般に好ましくありません。たいていは、複数のペー
ジを持つタブ コントロール コンポーネントを使用することで、スクロールを回避できます。
Embarcadero Technologies
88
フォーム上に多くの項目を置く必要がある場合には、TVertScrollBox コンポーネントを使用し
て、次のようにスクロール領域を定義します。
1. FireMonkey モバイル フォーム デザイナで[カスタム デバイス]を選択します。
2. デザイナの端をドラッグして、カスタム デバイスを必要な形およびサイズに変更します。
3. TVertScrollBox コンポーネントをドロップし、Align プロパティを alClient に設定しま
す。これで TVertScrollBox がクライアント領域いっぱいに配置されます。
4. TVertScrollBox コンポーネント上にコンポーネントを配置します。
Embarcadero Technologies
89
実行時にユーザー インターフェイスをスワイプすると、フォームをスクロールすることができ
ます。
関連項目
•
iOS アプリケーションでリスト ボックス コンポーネントを使用してテーブル ビューを
表示する
•
iOS デバイスの位置センサを使用する
•
チュートリアル:FireMonkey レイアウトを使用する
•
FireMonkey のレイアウト戦略
•
FireMonkey コントロールの配置
•
FireMonkey でのジェスチャ
Embarcadero Technologies
90
iOS アプリケーションで写真を撮って共有する
このチュートリアルを開始する前に、次のチュートリアルを読んで実行してください。
•
さまざまなスタイルを持つボタン コンポーネントを iOS アプリケーションで使用する
このチュートリアルでは、iOS アプリケーションで写真を使用するための、代表的な以下の処
理を扱います。
iOS デバイスのカメラで写真を撮
iOS デバイスのフォト ライ
る
ブラリの写真を使用する
写真を共有または印刷する
この機能はアクションとして提供されていて、どの処理もコードを 1 行書けばよいだけです。
アクションは、ユーザー インターフェイスの 1 つ以上の要素(メニュー コマンド、ツールバ
ー ボタン、コントロールなど)に対応します。
アクションには 2 つの機能があります。
•
ユーザー インターフェイス要素に共通のプロパティを表すことができます(コントロー
ルが有効か、チェック ボックスがオンになっているかなど)。
•
コントロールが起動したときに応答することができます(ユーザーがボタンをクリック
した、メニュー項目を選択したなど)。
このチュートリアルでは、サポートしたい機能ごとに、アクションをユーザー インターフェイ
ス要素(ボタンなど)に割り当てる方法を学びます。
Embarcadero Technologies
91
アプリケーションのユーザー インターフェイスを構築する
このサンプル アプリケーションのユーザー インターフェイスは、次の図に示すとても単純なも
のです。
フォーム デザイナに以下のコンポーネントを配置します。
•
TToolBar コンポーネント
o
3 つの TButton コンポーネント。各ボタンに異なるアイコンを使用します。
o
3 つのボタンの StyleLookup プロパティを、それぞれ
cameratoolbuttonbordered、searchtoolbuttonbordered、
actiontoolbuttonbordered に設定します。
•
TImage コンポーネント
o
•
Align プロパティを alClient に設定します。
TActionList コンポーネント
iOS デバイスのカメラで写真を撮る
iOS デバイスのカメラを使って写真を撮るアクションを定義することができます。手順は以下
のとおりです。
1. フォーム デザイナでボタン(写真撮影用)を選択します。
2. [オブジェクト インスペクタ]で、Action プロパティのドロップダウン リストを選択
します。
Embarcadero Technologies
92
3. [標準アクションの新規作成|メディア ライブラリ|TTakePhotoFromCameraAction]
を選択します。
4. [イベント]タブで Action ノードを展開し、OnDidFinishTaking イベントをダブルクリ
ックします。
5. OnDidFinishTaking イベント ハンドラに以下のコードを追加します。
procedure TForm1.TakePhotoFromCameraAction1DidFinishTaking(Image: TBitmap);
begin
Image1.Bitmap.Assign(Image);
end;
このコードでは、iOS デバイスのカメラで撮った写真を TImage コンポーネントの Bitmap プ
ロパティに割り当てています。
iOS デバイスのフォト ライブラリの写真を使用する
フォト ライブラリの写真を使用するアクションを定義することができます。手順は以下のとお
りです。
Embarcadero Technologies
93
1. フォーム デザイナで、使用したいボタン(写真選択用)を選択します。
2. [オブジェクト インスペクタ]で Action プロパティのドロップダウン リストをクリッ
クし、[標準アクションの新規作成|メディア ライブラリ|
TTakePhotoFromLibraryAction]を選択します。
3. [イベント]タブで Action ノードを展開し、OnDidFinishTaking イベントをダブルクリ
ックします。
4. OnDidFinishTaking イベント ハンドラに以下のコードを追加します。
procedure TForm1.TakePhotoFromLibraryAction1DidFinishTaking(Image: TBitmap);
begin
Image1.Bitmap.Assign(Image);
end;
このコードでは、フォト ライブラリから取得した写真を TImage コンポーネントの Bitmap プ
ロパティに割り当てています。
写真を共有または印刷する
iOS アプリケーションから、ソーシャル ネットワーキング サイト(Facebook や Twitter など)
で写真を共有したり、写真をプリンタに送信したり、写真を電子メールの添付ファイルにした
り、連絡先に設定することができます。
Embarcadero Technologies
94
このマルチシェア サービスはシェア シート機能と呼ばれるもので、以下の手順で実装すること
ができます。
1. フォーム デザイナでボタン(写真共有用)を選択します。
2. [オブジェクト インスペクタ]で Action プロパティのドロップダウン リストをクリッ
クし、[標準アクションの新規作成|メディア ライブラリ|ShowShareSheetAction]
を選択します。
3. [イベント]タブで Action ノードを展開し、OnBeforeExecute イベントをダブルクリ
ックします。
4. OnBeforeExecute イベント ハンドラに以下のコードを追加します。
procedure TForm1.ShowShareSheetAction1BeforeExecute(Sender: TObject);
begin
ShowShareSheetAction1.Bitmap.Assign(Image1.Bitmap);
end;
このコードでは、TImage コンポーネントの写真を "シェア シート機能" に割り当てています。
サービスの一覧から[Facebook]を選択すると、コメントを付けて写真を Facebook に投稿す
ることができます。
関連項目
•
iOS デバイスの位置センサを使用する
•
iOS デバイスの通知センターを使用する
•
FireMonkey のアクション
•
FMX.StdCtrls.TButton
FMX.Objects.TImage
•
Embarcadero Technologies
95
•
•
FMX.MediaLibrary
http://appleinsider.com/articles/12/02/16/share_sheets_twitter_integration_to_make_m
ountain_lion_more_social/
Embarcadero Technologies
96
iOS デバイスの位置センサを使用する
このチュートリアルを開始する前に、次のチュートリアルを読んで実行してください。
•
iOS アプリケーションでリスト ボックス コンポーネントを使用してテーブル ビューを表示
する
•
iOS アプリケーションで Web ブラウザ コンポーネントを使用する
•
iOS アプリケーションでレイアウトを使用してフォームのさまざまなサイズや向きを調整す
る
このチュートリアルでは、(緯度と経度を使用して)iOS デバイスの位置を確認し、逆ジオコ
ーディングによって次の図のような人が読み取れる住所に変換します。
Embarcadero Technologies
97
ユーザー インターフェイスを設計する
このデモ アプリケーションの設計には、2 つの主要コンポーネントが含まれています。
TListBox(左側)と TWebBrowser です。
•
TListBox の Align プロパティを alLeft に設定して、UI の左側を確保します。その後、
リスト ボックスの下に次のサブコンポーネントを作成します。
o
以下のサブコンポーネントを含む TListBoxHeader コンポーネント

タイトル "Location Demo" を表示するための TLabel コンポーネント

TLocationSensor のオン/オフを選択するための TSwitch(Switch1)コン
ポーネント
o
テキストが "Your Location" の TListBoxGroupHeader
o
名前が "ListBoxItemLatitude"、テキストが "Latitude" の TListBoxItem
o
名前が "ListBoxItemLongitude"、テキストが "Longitude" の TListBoxItem
o
テキストが "Current Address" の TListBoxGroupHeader
o
名前が "ListBoxItemAdminArea"、テキストが "AdminArea" の TListBoxItem
o
名前が "ListBoxItemCountryCode"、テキストが "CountryCode" の
o
TListBoxItem
名前が "ListBoxItemCountryName"、テキストが "CountryName" の
o
TListBoxItem
名前が "ListBoxItemFeatureName"、テキストが "FeatureName" の
o
TListBoxItem
名前が "ListBoxItemLocality"、テキストが "Locality" の TListBoxItem
Embarcadero Technologies
98
•
o
名前が "ListBoxItemPostalCode"、テキストが "PostalCode" の TListBoxItem
o
名前が "ListBoxItemSubAdminArea"、テキストが "SubAdminArea" の
o
TListBoxItem
名前が "ListBoxItemSubLocality"、テキストが "SubLocality" の TListBoxItem
o
名前が "ListBoxItemSubThoroughfare"、テキストが "SubThoroughfare" の
o
TListBoxItem
名前が "ListBoxItemThoroughfare"、テキストが "Thoroughfare" の
TListBoxItem
Web ページ(Google マップ)を表示するための TWebBrowser コンポーネント
(WebBrowser1)。Align プロパティを alClient に設定します。
これらのコンポーネントを作成したら、すべての TListBoxItem 項目を選択し、StyleLookup プ
ロパティに listboxitemleftdetail を選択します。これによって TListBoxItem にラベルと詳細テ
キストの両方が表示されます。
位置センサ
位置センサは、TLocationSensor コンポーネントにラップされています。
デバイスで移動が検出されると、TLocationSensor で OnLocationChanged イベントが発生し
ます。TLocationSensor の感度は Distance プロパティで調整することができます。Distance
を "10" に設定すると、"10 メートル" 移動したときに TLocationSensor で
OnLocationChanged イベントが発生します。
位置センサ コンポーネントから位置情報(緯度、経度)を読
み取る
まず、TLocationSensor コンポーネントをアクティブ化して使用できるようにしなければなり
ません。TSwitch コンポーネントや他のアプリケーション イベントなどの入力によって、
TLocationSensor をオン/オフすることができます。
次に示すのは、TSwitch コンポーネントの値が変化すると、それに合わせて TLocationSensor
を制御するコードです。
procedure TForm44.Switch1Switch(Sender: TObject);
begin
Embarcadero Technologies
99
LocationSensor1.Active := Switch1.IsChecked;
end;
先ほど述べたように、iOS デバイスを動かすと、TLocationSensor で OnLocationChanged イ
ベントが発生します。このイベント ハンドラでパラメータを使用して現在の位置(緯度と経度)
を表示することができます。
procedure TForm44.LocationSensor1LocationChanged(Sender: TObject;
const OldLocation, NewLocation: TLocationCoord2D);
begin
// Show current location
ListBoxItemLatitude.ItemData.Detail
:= NewLocation.Latitude.ToString;
ListBoxItemLongitude.ItemData.Detail := NewLocation.Longitude.ToString;
end;
TWebBrowser コンポーネントで Google マップを使用して
現在の位置を表示する
「iOS アプリケーションで Web ブラウザ コンポーネントを使用する」で説明したように、
TWebBrowser コンポーネントには iOS 用の Web ブラウザがラップされています。
次の URL パラメータを使用すると、TWebBrowser コンポーネントから Google マップを呼び
出すことができます。
https://maps.google.com/maps?q=(Latitude-value),(Longitude-value)&output=embed
そのため、この URL を先ほど作成したイベント ハンドラ OnLocationChanged に追加します。
コードは次のようになります。
procedure TForm44.LocationSensor1LocationChanged(Sender: TObject;
const OldLocation, NewLocation: TLocationCoord2D);
var
URLString: String;
begin
Embarcadero Technologies
100
// code for previous step goes here
// Show Map using Google Maps
URLString := Format(
'https://maps.google.com/maps?q=%s,%s&output=embed',
[NewLocation.Latitude.ToString, NewLocation.Longitude.ToString]);
WebBrowser1.Navigate(URLString);
end;
逆ジオコーディングを使用する
TGeocoder は、ジオコーディング(または逆ジオコーディング)サービスをラップするオブジ
ェクトです。
ジオコーディングとは、住所や郵便番号などの地理データを地理座標に変換する処理です。逆
ジオコーディングとは、地理座標をそれ以外の住所などの地理データに変換する処理です。
ここでは、TGeocoder を使用して、位置(緯度と経度)を "逆ジオコーディング" し、人が読
み取れる住所情報にします。
TGeocoder を使った作業の基本的な手順は次のとおりです。
1. TGeocoder のインスタンスを作成します。
2. イベント OnGeocodeReverse を定義して、後でイベントを受け取れるようにします。
3. "逆ジオコーディング" を実行するためのデータを設定します。
4. TGeocoder でネットワーク上のサービスにアクセスして住所情報を解決します。
5. TGeocoder で OnGeocodeReverse イベントを発生させます。
6. iOS アプリケーションで、OnGeocodeReverse イベントのパラメータから住所情報を受
け取り、ユーザー インターフェイスを更新します。
TGeocoder はコンポーネントではないため(ただのクラスです)、これらの手順をコードで
定義する必要があります(コンポーネントをドロップしたり[オブジェクト インスペクタ]で
イベント ハンドラを割り当てることはできません)。
まず、フォームの private セクションに新しいフィールド "FGeocoder: TGeocoder" を定義し
ます。また、"OnGeocodeReverseEvent 手続き" も定義します。コードは次のとおりです。
Embarcadero Technologies
101
type
TForm44 = class(TForm)
// IDE defines visible (or non-visual) components here automatically
private
{ Private declarations }
FGeocoder: TGeocoder;
procedure OnGeocodeReverseEvent(const Address: TCivicAddress);
public
{ Public declarations }
end;
この 2 行を定義したら、<wiki-bold>OnGeocodeReverseEvent</wiki-bold> の行で
Ctrl+Shift+C キーを押します。すると、コード中に次の手続きが作成されます(これは後で
使用します)。
procedure TForm44.OnGeocodeReverseEvent(const Address: TCivicAddress);
begin
end;
これで、後のコードで示すように、TGeocoder のインスタンスを作成し、データをセットア
ップすることができます。
TGeocoder.Current からは、ジオコーディング サービスを実際に実装しているクラスの型が返
されます。"TGeocoder.Current.Create" のコードでは、指定された型のコンストラクタ
(Create)を呼び出し、FGeocoder フィールドに保存しています。また、TGeocoder の逆ジ
オコーディングが完了したときに発生するイベント ハンドラを指定する必要もあります。
OnGeocodeReverseEvent(前のステップで定義したもの)を
FGeocoder.OnGeocodeReverse に代入します。
最後に、TGeocoder のインスタンスの作成が成功していて、かつ TGeocoder が動作していな
ければ、位置情報を渡して TGeocoder.GeocodeReverse を呼び出します。TGeocoder がデー
タを受け取ると、OnGeocodeReverseEvent イベントが発生します。
Embarcadero Technologies
102
procedure TForm44.LocationSensor1LocationChanged(Sender: TObject;
const OldLocation, NewLocation: TLocationCoord2D);
begin
// code for previous steps goes here
// Setup an instance of TGeocoder
if not Assigned(FGeocoder) then
begin
if Assigned(TGeocoder.Current) then
FGeocoder := TGeocoder.Current.Create;
if Assigned(FGeocoder) then
FGeocoder.OnGeocodeReverse := OnGeocodeReverseEvent;
end;
// Translate location to address
if Assigned(FGeocoder) and not FGeocoder.Geocoding then
FGeocoder.GeocodeReverse(NewLocation);
end;
Embarcadero Technologies
103
リスト ボックス コンポーネントに人が読み取れる住所を表
示する
先ほど述べたように、逆ジオコーディングが完了すると OnGeocodeReverseEvent が発生しま
す。
次に、住所パラメータ TCivicAddress に含まれるプロパティを代入して、人が読み取れる住所
情報をリスト ボックス フィールドに表示します。
procedure TForm44.OnGeocodeReverseEvent(const Address: TCivicAddress);
begin
ListBoxItemAdminArea.ItemData.Detail
:= Address.AdminArea;
ListBoxItemCountryCode.ItemData.Detail
:= Address.CountryCode;
ListBoxItemCountryName.ItemData.Detail
:= Address.CountryName;
ListBoxItemFeatureName.ItemData.Detail
:= Address.FeatureName;
ListBoxItemLocality.ItemData.Detail
:= Address.Locality;
ListBoxItemPostalCode.ItemData.Detail
:= Address.PostalCode;
ListBoxItemSubAdminArea.ItemData.Detail
:= Address.SubAdminArea;
ListBoxItemSubLocality.ItemData.Detail
:= Address.SubLocality;
ListBoxItemSubThoroughfare.ItemData.Detail := Address.SubThoroughfare;
ListBoxItemThoroughfare.ItemData.Detail
:= Address.Thoroughfare;
end;
関連項目
•
iOS アプリケーションでレイアウトを使用してフォームのさまざまなサイズや向きを調
整する
•
iOS デバイスの通知センターを使用する
•
System.Sensors.TGeocoder
FMX.Sensors.TLocationSensor
•
Embarcadero Technologies
104
iOS デバイスの通知センターを使用する
このチュートリアルでは、iOS デバイス上で通知センターを使用する基本的な手順を説明しま
す。
3 つの基本的な通知(警告)方法
ユーザーが iOS デバイスでアプリケーションの通知を設定している場合には、ここに示す 3 つ
の基本的な方法でアプリケーションから通知を配信することができます。バナーが表示される
のは一時的ですが、ダイアログはユーザーが消す必要があります。
アプリケーション アイコンのバッジ
iPad の通知バナー
通知ダイアログ
iPad の通知センター
次の図に示すのは iPad の通知センターです。ユーザーがリストをプルダウンすると最近の通知
すべてを見ることができます。
Embarcadero Technologies
105
通知サービスにアクセスする
通知サービス インターフェイス(IFMXNotificationCenter)は、FireMonkey プラットフォーム
サービス(TPlatformServices)の 1 つとして定義されています。
通知サービスにアクセスするには、次の 2 つの作業を行います。
次の 2 つのユニットが uses 句に含まれていない場合には追加します。
•
uses
FMX.Platform, FMX.Notification;
次のコードを使って FireMonkey プラットフォーム サービスの問い合わせを実行します。
•
var
NotificationService: IFMXNotificationCenter;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXNotificationCenter) then
NotificationService :=
TPlatformServices.Current.GetPlatformService(IFMXNotificationCenter)
as IFMXNotificationCenter;
// Use the Notification Service
end;
Embarcadero Technologies
106
IFMXNotificationCenter インターフェイスには、アイコン バッジの数字や通知を使用するため
の基本サービスが用意されています。
コードからアイコン バッジの数字を設定する
IFMXNotificationCenter には、アイコン バッジの数字を定義するための SetIconBadgeNumber
メソッドがあります。
procedure TForm1.SerIconBadgeNumber;
var
NotificationService: IFMXNotificationCenter;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXNotificationCenter) then
NotificationService :=
TPlatformServices.Current.GetPlatformService(IFMXNotificationCenter)
as IFMXNotificationCenter;
// Reset Icon Badge Number
if Assigned(NotificationService) then
NotificationService.SetIconBadgeNumber(18);
end;
アイコン バッジの数字を 18 に設定すると、iOS ホーム画面に表示されます。
アイコン バッジの数字は、ResetIconBadgeNumber メソッドを使ってリセットすることもでき
ます。
procedure TForm1.ResetIconBadgeNumber;
var
NotificationService: IFMXNotificationCenter;
Embarcadero Technologies
107
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXNotificationCenter) then
NotificationService :=
TPlatformServices.Current.GetPlatformService(IFMXNotificationCenter)
as IFMXNotificationCenter;
// Set Icon Badge Number
if Assigned(NotificationService) then
NotificationService.ResetIconBadgeNumber;
end;
通知のスケジュールを設定する
ScheduleNotification メソッドを使って通知メッセージのスケジュールを設定することもでき
ます。
通知メッセージを表示するには、TNotification クラスのインスタンスを作成し、名前(識別子)
とメッセージを定義する必要があります。
procedure TForm1.ScheduleNotification;
var
NotificationService: IFMXNotificationCenter;
Notification: TNotification;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXNotificationCenter) then
NotificationService :=
TPlatformServices.Current.GetPlatformService(IFMXNotificationCenter)
as IFMXNotificationCenter;
if Assigned(NotificationService) then
begin
Notification := TNotification.Create;
try
Notification.Name := 'MyNotification';
Notification.AlertBody := 'Delphi for iOS is here!';
// Fired in 10 second
Notification.FireDate := Now + EncodeTime(0,0,10,0);
Embarcadero Technologies
108
// Send notification in Notification Center
NotificationService.ScheduleNotification(Notification);
finally
Notification.Free;
end;
end
end;
通知メッセージを設定すると、iOS ホーム画面の上部に表示されます。
スケジュールされた通知メッセージを更新またはキャンセル
する
スケジュールされた個々の通知メッセージは、TNotification オブジェクトの Name プロパテ
ィで識別することができます。
スケジュールされた通知を更新するには、同じ名前(Name プロパティ)を持つ TNotification
のインスタンスを引数にして ScheduleNotification をもう一度呼び出します。
スケジュールされた通知をキャンセルするには、使用した識別子を引数にして
CancelNotification メソッドを呼び出すだけです。
procedure TForm1.CancelNotification;
var
NotificationService: IFMXNotificationCenter;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXNotificationCenter) then
NotificationService :=
TPlatformServices.Current.GetPlatformService(IFMXNotificationCenter)
as IFMXNotificationCenter;
if Assigned(NotificationService) then
Embarcadero Technologies
109
NotificationService.CancelNotification('MyNotification');
end;
通知メッセージをすぐに表示する
PresentNotification を使用して、通知メッセージをすぐに表示することもできます。
通知メッセージを表示するには、TNotification クラスのインスタンスを作成し、名前(識別子)
とメッセージを定義する必要があります。
procedure TForm1.PresentNotification;
var
NotificationService: IFMXNotificationCenter;
Notification: TNotification;
begin
if TPlatformServices.Current.SupportsPlatformService(IFMXNotificationCenter) then
NotificationService :=
TPlatformServices.Current.GetPlatformService(IFMXNotificationCenter)
as IFMXNotificationCenter;
if Assigned(NotificationService) then
begin
Notification := TNotification.Create;
try
Notification.Name := 'MyNotification';
Notification.AlertBody := 'Delphi for iOS is here!';
// Set Icon Badge Number as well
Notification.ApplicationIconBadgeNumber := 18;
// Show Notification Message
NotificationService.PresentNotification(Notification);
finally
Notification.Free;
end;
end;
end;
Embarcadero Technologies
110
通知バナーと通知ダイアログ
デフォルトでは、アプリケーションによって通知バナーが表示されます。
•
iPad の通知バナー
•
通知ダイアログ
通知バナーの代わりに通知ダイアログを使用するには、エンド ユーザーが通知センタ―の構成
ページで通知のスタイルを変更する必要があります。
Embarcadero Technologies
111
Embarcadero Technologies
112
通知ダイアログにアクションを追加する
ダイアログをカスタマイズしてアクション ボタンを追加することもできます。
ダイアログのアクションをカスタマイズするには、アクションを AlertAction プロパティに設
定し、その後、HasAction プロパティを True に設定します。コードは次のとおりです。
Notification := TNotification.Create;
try
Notification.Name := 'MyNotification';
Notification.AlertBody := 'Delphi for iOS is here!';
Notification.AlertAction := 'Code Now!';
Notification.HasAction := True;
// Fired in 10 seconds
Notification.FireDate := Now + EncodeTime(0,0,10,0);
// Show Notification Message
NotificationService.ScheduleNotification(Notification);
finally
Notification.Free;
end;
関連項目
•
iOS アプリケーションで写真を撮って共有する
•
iOS デバイスの位置センサを使用する
•
FMX.Notification.IFMXNotificationCenter
Embarcadero Technologies
113
iOS アプリケーションで InterBase ToGo を使用
する
このチュートリアルを開始する前に、次のチュートリアルを読んで実行してください。
•
iOS アプリケーションでリスト ボックス コンポーネントを使用してテーブル ビューを表示
する
このチュートリアルでは、dbExpress フレームワークを使って iOS デバイス上で InterBase
ToGo の管理するデータを参照する基本手順を説明します。
dbExpress を使用してデータベースに接続する
dbExpress は、Delphi で書かれた非常に高速なデータベース アクセス フレームワークです。
RAD Studio では、InterBase、Oracle、DB2、SQL Server、MySQL、Firebird、SQLite、ODBC
など、ほとんどの主要データベース用にドライバを用意しています。データベースは違っても、
ここで説明するものと同様の手順でこれらのデータベースにアクセスすることができます。
Embarcadero Technologies
114
•
iOS プラットフォームの場合、dbExpress では InterBase ToGo および SQLite をサポー
トしています。これらのデータベース製品は iOS デバイス上で動かすことができます。
•
それ以外の Oracle などのデータベースでは、少なくともクライアント ライブラリが必
要です。Windows プラットフォームでは、クライアント ライブラリは DLL として提供
されていて、それに対して接続します。そのため、iOS デバイスからこれらのデータベ
ース製品に接続するには、DataSnap などの中間層技術を使ってアプリケーションを開
発する必要があります。
iOS デバイス上でクライアント ライブラリを使用せずにエンタープライズ データベースに接続
する方法は、別のチュートリアルで説明しています。「iOS クライアント アプリケーションか
らエンタープライズ データベースに接続する」を参照してください。
ユーザー インターフェイスを設計しセットアップする
このチュートリアルでは、1 つの TListBox コンポーネントを UI 要素として使用します。
以下の手順でリスト ボックス コンポーネントをセットアップします。
1. [ファイル|新規作成|FireMonkey モバイル アプリケーション - Delphi|空のアプリ
ケーション]を選択して HD FireMonkey モバイル アプリケーションを作成します。
2. フォーム上に TListBox コンポーネントをドロップします。
3. [オブジェクト インスペクタ]で、リスト ボックスの次のプロパティを設定します。
o
Align プロパティを alClient に設定して、リスト ボックス コンポーネントがフ
ォーム全体を占めるようにします。
o
DefaultItemStyles.ItemStyle プロパティを listboxitembottomdetail に設定します。
4. TListBox コンポーネントをデザイナまたはエディタで右クリックし、[項目の追加]を
選択して以下のコンポーネントを追加します。
o
TListBoxHeader コンポーネント。
o
TSearchBox コンポーネント。
Embarcadero Technologies
115
5. [項目デザイナ]を閉じます。
6. TLabel コンポーネントを TListBoxHeader に追加し、[オブジェクト インスペクタ]で
以下のプロパティを設定します。
o
TLabel コンポーネントの Align プロパティを alClient に設定します。
o
StyleLookup プロパティを toollabel に設定します。
o
TextAlign プロパティを taCenter に設定します。
o
Text プロパティを「DB DEMO」に設定します。
データに接続する
dbExpress を使ってデータベース内のデータに接続する基本手順は以下のとおりです。
1. [ツール パレット]で TSQLConnection コンポーネントをダブルクリックします。
2. [オブジェクト インスペクタ]で TSQLConnection の以下のプロパティを設定します。
1. このアプリケーションでは InterBase ToGo を使用するため、Driver プロパティ
を IBLite/ToGo に設定します。
2. LoginPrompt プロパティを False に設定して、ユーザーにログインを求めるプ
ロンプトを表示しないようにします。
Embarcadero Technologies
116
3. Params プロパティの参照([...])ボタンをクリックして、Database の値を
「 C:\Users\Public\Documents\RAD Studio\11.0\Samples\Data\dbdemos.gdb 」
(データベースの場所)に設定し、ダイアログ ボックスを閉じます。
4. Connected プロパティを True に設定します。
メモ: 開発環境でエラー([unavailable database.])が発生したら、それは現在
InterBase のライセンスがないことを示しています。一部の製品エディションでは、
InterBase Developer Edition のライセンスが製品に含まれています。詳細は「トラブル
シューティング」を参照してください。
3. フォームに TSQLDataSet コンポーネントを追加し、以下のプロパティを設定します。
1. SQLConnection プロパティを SQLConnection1(前のステップで追加したもの)
に設定します。
2. CommandText プロパティを「select COMMON_NAME, SPECIES_NAME from
BIOLIFE order by COMMON_NAME」に設定します。
3. Active プロパティを True に設定します。
4. [LiveBinding デザイナ]を開き、データとユーザー インターフェイスを次のように接
続します。
1. SQLDataSet1 の COMMON_NAME をクリックし、マウス カーソルを ListBox1
の Item.Text へとドラッグします。
Embarcadero Technologies
117
2. SQLDataSet1 の SPECIES_NAME をクリックし、マウス カーソルを ListBox1 の
Item.Detail へとドラッグします。
Embarcadero Technologies
118
アプリケーションを iOS に配置する
ここまでは、デスクトップで InterBase を使用してきました。つまり、実際のデータベースは、
ローカルのハード ディスク ドライブ上(C:\Users\Public\Documents\RAD
Studio\11.0\Samples\Data\dbdemos.gdb など)にあります。iOS デバイスでは、アプリケー
ションはサンドボックス化されるため、通常はアプリケーション フォルダの下の Documents
フォルダにあるデータしか読み書きできません。
iOS 上でローカル データベースに接続するには、以下の作業を実施する必要があります。
•
データベースを iOS デバイスに配置する。
•
(データベース ファイルに接続するための)構成を Documents フォルダ下のローカル
ファイルに変更する。
InterBase ToGo、dbExpress ドライバ、データベース ファイルを iOS に
配置する
iOS でアプリケーションを実行するには、以下のファイルを配置する必要があります。
Interbase ToGo
•
InterBase 用 dbExpress ドライバ
•
データベース ファイル(dbdemos.gdb)
1. [プロジェクト|配置]を選択して配置マネージャを開きます。
2. 配置マネージャの上部にあるターゲット プラットフォームのドロップダウン リストか
ら[すべての構成 - iOS シミュレータ プラットフォーム]を選択します。
3. [機能ファイルの追加](
)を選択します。
4. 以下のデータベース モジュールを選択し、[OK]をクリックして[機能ファイル]ダ
イアログ ボックスを閉じます。
o
InterBase ToGo。アプリケーションをデバイスに配置するときに使用するライ
センスを選択する必要があります。使用可能なライセンス ファイルは、[機能
ファイル]ダイアログに reg_*.slip というパターンの名前で表示されます。この
Embarcadero Technologies
119
チュートリアルでは、次の図のように、IBToGo と IBLite のライセンス ファイル
を選択します。
o
dbExpress の Interbase ドライバ
5. [ファイルの追加]を選択し、データベース ファイル
(C:\Users\Public\Documents\RAD Studio\11.0\Samples\Data\dbdemos.gdb など)を
選択します。
6. dbdemos.gdb を選択し、[リモート パス]を「StartUp\Documents\」に変更します。
7. [プラットフォーム]の列を選択して次の作業を行います(dbdemos.gdb の行で参照
([...])ボタンをダブルクリックします)。
1. dbdemos.gdb について、[iOSSimulator]と[iOSDevice]が含まれていることを確認し
ます。
2. [Win32]が含まれている場合にはリストから削除します(データベース ファ
イルを Win32 プラットフォームにコピーする必要はありません)。
[すべての構成 - iOS デバイス プラットフォーム]を選択し、dbdemos.gdb が
StartUp\Documents\ に配置されるよう設定されていることを確認します。
Embarcadero Technologies
120
ここで構成したとおり、データベース ファイル(dbdemos.gdb)は iOS アプリケーションの
サンドボックス領域にある Documents フォルダに配置されます。
iOS 上のローカル データベース ファイルに接続するようコードを変更する
前のステップで説明したように、TSQLConnection コンポーネントはローカル ファイル システ
ム上のデータベースに対して絶対パスで接続します。そのため、データベースに接続する前に
ファイルの場所を置き換える必要があります。手順は以下のとおりです。
1. フォーム デザイナで SQLConnection1 コンポーネントを選択します。
2. [オブジェクト インスペクタ]で、BeforeConnect イベントの値のフィールドをダブ
ルクリックします。
3. このイベント ハンドラに次のコードを追加します。
procedure TForm1.SQLConnection1BeforeConnect(Sender: TObject);
begin
{$IFDEF IOS}
SQLConnection1.Params.Values['Database']
:= GetHomePath + PathDelim
+ 'Documents' + PathDelim + 'dbdemos.gdb';
{$ENDIF}
end;
GetHomePath 関数からは、iOS アプリケーションの実際のホームの場所が返されます。
PathDelim 定数を使用することが推奨されています。これは、\ や / などの区切り文字をハー
ドコードするのではなく、PathDelim によってターゲット プラットフォームの固有のパス区切
り文字を使用できるためです。
Embarcadero Technologies
121
iOS シミュレータまたは iOS デバイス上でアプリケーション
を実行する
これでアプリケーションを実行する準備が整いました。IDE 内で実行したときと同様に、デー
タを参照することができるはずです。また、2 番目の画像に示すように、検索ボックスを使用
してリストを絞り込むこともできます。
Embarcadero Technologies
122
トラブルシューティング
InterBase のライセンスの問題
開発環境でデータベースに接続したときにエラー([unavailabale database.])が発生したら、
それは現在 InterBase のライセンスがないことを示しています。
一部の製品エディションでは、InterBase Developer Edition のライセンスが製品に含ま
•
れています。
登録済みの RAD Studio で InterBase Developer Edition のライセンスを認証するには、
•
[Embarcadero 製品ライセンス マネージャ]を使用します([スタート|すべてのプロ
グラム|Embarcadero InterBase XE3]をクリックしてください)。
例外処理の問題
アプリケーションで例外が発生して適切な例外処理コードがない場合、iOS アプリケーション
は実行時にそのままクラッシュします(消えてしまいます)。クラッシュが発生した場合、問
題のトラブルシューティング時に手動でデータベースに接続することができます。手順は以下
のとおりです。
1. SQLConnection1 コンポーネントを選択し、Connected プロパティを False に変更しま
す。
2. ボタンをフォームにドロップし、データベースに手動で接続するための次のようなイベ
ント ハンドラを作成します。
procedure TForm1.Button1Click(Sender: TObject);
begin
try
SQLConnection1.Connected := True;
SQLDataSet1.Active := True;
except
on e: Exception do
begin
ShowMessage(e.Message);
end;
end;
end;
Embarcadero Technologies
123
Embarcadero Technologies
124
よくあるエラーと解決方法
以下に挙げるのは、データベースへの接続時に発生しがちなエラーと、その問題を解決するた
めの案です。
iOS でのエラー
解決方法
データベース ファイル(dbdemos.gdb)が 'StartUp\Documents\' に
配布されているかを確認します。
InterBase ToGo のライセンス ファイルが配布されているかを確認し
ます。
ローカル ファイルを指定しているかを確認します(SQLConnection1
コンポーネントの OnBeforeConnect イベントに対するイベント ハン
ドラを追加します)。
関連項目
•
dbExpress での InterBase ToGo の使用
•
•
http://www.embarcadero.com/products/interbase/product-editions
iOS アプリケーションで SQLite を使用する
•
iOS クライアント アプリケーションからエンタープライズ データベースに接続する
Embarcadero Technologies
125
iOS アプリケーションで SQLite を使用する
このチュートリアルを開始する前に、次のチュートリアルを読んで実行してください。
•
iOS アプリケーションでリスト ボックス コンポーネントを使用してテーブル ビューを表示
する
このチュートリアルでは、dbExpress フレームワークにより iOS デバイス上のローカル データ
ストレージとして SQLite を使用する基本手順を説明します。
dbExpress を使用してデータベースに接続する
dbExpress は、Delphi で書かれた非常に高速なデータベース アクセス フレームワークです。
RAD Studio では、InterBase、Oracle、DB2、SQL Server、MySQL、Firebird、SQLite、ODBC
Embarcadero Technologies
126
など、ほとんどの主要データベース用にドライバを用意しています。データベースは違っても、
ここで説明するものと同様の手順でこれらのデータベースにアクセスすることができます。
•
iOS プラットフォームの場合、dbExpress では InterBase ToGo および SQLite をサポー
トしています。これらのデータベース製品は iOS デバイス上で動かすことができます。
•
それ以外の Oracle などのデータベースでは、少なくともクライアント ライブラリが必
要です。Windows プラットフォームでは、クライアント ライブラリは DLL として提供
されていて、それに対して接続します。そのため、iOS デバイスからこれらのデータベ
ース製品に接続するには、DataSnap などの中間層技術を使ってアプリケーションを開
発する必要があります。
iOS デバイス上でクライアント ライブラリを使用せずにエンタープライズ データベースに接続
する方法は、別のチュートリアルで説明しています。「iOS クライアント アプリケーションか
らエンタープライズ データベースに接続する」を参照してください。
Windows 環境で開発用にデータベースを作成する
まず、開発用の Windows プラットフォームで SQLite データベース ファイルを作成します。モ
バイル フォーム デザイナを使って iOS アプリケーションのユーザー インターフェイスを設計
できるよう、以下の手順を実施します。
[データ エクスプローラ]でデータベースを作成する
1. [データ エクスプローラ]で[SQLite]ノードを右クリックし、[新規接続を追加]を
選択します。
2. 接続の名前を定義します。たとえば「ShoppingList」とします。
3. データベース ファイルの場所を指定します。
Embarcadero Technologies
127
4. [詳細]ボタンをクリックして[拡張プロパティ]ダイアログを開きます。
5. FailIfMissing プロパティを「False」に変更してダイアログを閉じます。
メモ: FailIfMissing を「False」に設定すると、ファイルが存在しない場合に[データ
エクスプローラ]によって新しいデータベース ファイルが作成されます。
6. [接続テスト]ボタンをクリックします。この操作を行うと、ファイルが存在しない場
合に新しいデータベース ファイルが作成されます。
[データ エクスプローラ]でテーブルを作成する
1. [データ エクスプローラ]で、[SQLite]セクションの ShoppingList ノードを選択し、
コンテキスト メニューから[テーブルの新規作成]を選択します。
Embarcadero Technologies
128
2. 値が TEXT の「ShopItem」という列を指定します。
3. [保存]ボタンをクリックし、テーブル名を指定します(「Item」など)。
ユーザー インターフェイスを設計しセットアップする
このチュートリアルでは、1 つの TListBox コンポーネントを UI 要素として使用します。
Embarcadero Technologies
129
以下の手順でリスト ボックス コンポーネントなどの UI 要素をセットアップします。
1. [ファイル|新規作成|FireMonkey モバイル アプリケーション- Delphi]を選択して
FireMonkey モバイル アプリケーションを作成します。
2. フォーム上に TToolBar をドロップします。
3. ツールバー コンポーネント上に TButton をドロップします。
4. [オブジェクト インスペクタ]で以下のプロパティを設定します。
o
Name プロパティを「ButtonAdd」に設定します。
o
StyleLookup を addtoolbuttonbordered に設定します。
5. ツールバー コンポーネント上に TButton をドロップします。
6. [オブジェクト インスペクタ]で以下のプロパティを設定します。
o
Name プロパティを「ButtonDelete」に設定します。
o
StyleLookup を deletetoolbutton に設定します。
o
Text を「Delete」に設定します。
o
Visible を False に設定します。
7. ツールバー コンポーネント上に TLabel をドロップします。
8. [オブジェクト インスペクタ]で以下のプロパティを設定します。
o
Align を alClient に設定します。
o
StyleLookup を toollabel に設定します。
o
Text を「Shopping List」に設定します。
o
TextAlign を taCenter に設定します。
9. フォーム上に TListBox コンポーネントをドロップします。
10. [オブジェクト インスペクタ]で以下のプロパティを設定します。
o
Align プロパティを alClient に設定して、リスト ボックス コンポーネントがフ
ォーム全体を占めるようにします。
データに接続する
[データ エクスプローラ]で既に定義したデータベース内のデータに接続する基本手順は以下
のとおりです。
1. [データ エクスプローラ]の Item テーブルを選択し、フォーム デザイナへとドラッグ
します。
Embarcadero Technologies
130
メモ: これによって、2 つのコンポーネント(ShoppingList: TSQLConnection および
Item: TSQLDataSet)がフォーム上に作成されます。
2. フォームで ShoppingList コンポーネントを選択し、Connected プロパティを True に変
更します。
3. フォームで Item コンポーネントを選択し、Active プロパティを True に変更します。
4. [表示|LiveBinding デザイナ]を選択して[LiveBinding デザイナ]を開きます。
5. Item コンポーネントの ShopItem を選択し、ShopItem を ListBox1 へとドラッグします。
この手順を実施すると、アプリケーションのユーザー インターフェイスが SQLite データベー
スのデータに接続されます。データが既に含まれたテーブルをこのチュートリアルで使用して
いる場合には、これでフォーム デザイナに実際のデータが表示されるはずです。
Embarcadero Technologies
131
ユーザーがリストの項目を選択したときに削除ボタンを表示
するためのイベント ハンドラを作成する
[Delete]ボタンの Visible プロパティは False に設定されています。そのため、このボタンは
デフォルトでエンド ユーザーから見えなくなっています。次のようにすると、ユーザーがリス
トの項目を選択したときにこのボタンを表示することができます。
•
ListBox1 を選択し、OnItemClick イベント用に以下のイベント ハンドラを定義します。
procedure TForm1.ListBox1ItemClick(const Sender: TCustomListBox;
const Item: TListBoxItem);
begin
ButtonDelete.Visible := ListBox1.Selected <> nil;
end;
リストにエントリを追加するための追加ボタン用のイベント
ハンドラを作成する
Embarcadero Technologies
132
次のステップでは、項目をショッピング リストに追加する機能をアプリケーションに追加しま
す。
1. フォーム上に TSQLQuery コンポーネントをドロップします。
2. [オブジェクト インスペクタ]で以下のプロパティを設定します。
o
Name プロパティを「SQLQueryInsert」に設定します。
o
SQLConnection プロパティを ShoppingList に設定します。
o
SQL プロパティを次のように設定します。
INSERT INTO ITEM (ShopItem) VALUES (:ShopItem)
o
Params プロパティの拡張([...])ボタンを選択します。
o
ShopItem パラメータを選択し、DataType を ftString に設定します。
3. フォーム デザイナで AddButton コンポーネントをダブルクリックします。このイベン
ト ハンドラに次のコードを追加します。
procedure TForm1.ButtonAddClick(Sender: TObject);
var
TaskName: String;
begin
try
if InputQuery('Enter New Item', 'Name', TaskName) and (TaskName.Trim <> '') then
begin
SQLQueryInsert.ParamByName('ShopItem').AsString := TaskName;
SQLQueryInsert.ExecSQL();
Item.Refresh;
ButtonDelete.Visible := ListBox1.Selected <> nil;
Embarcadero Technologies
133
end;
except
on e: Exception do
begin
ShowMessage(e.Message);
end;
end;
end;
InputQuery 関数は、エンド ユーザーにテキストの入力を求めるダイアログ ボックスを表示し
ます。この関数からはユーザーが[OK]を選択したときに True が返されるため、ユーザーが
[OK]を選択し、かつ、テキストにデータが含まれている場合にのみ、データベースにデータ
を追加することができます。
Embarcadero Technologies
134
リストからエントリを削除するための削除ボタン用のイベン
ト ハンドラを作成する
次のステップでは、項目をショッピング リストから削除する機能をアプリケーションに追加し
ます。
1. フォーム上に TSQLQuery コンポーネントをドロップします。
2. [オブジェクト インスペクタ]で以下のプロパティを設定します。
o
Name プロパティを「SQLQueryDelete」に設定します。
o
SQLConnection プロパティを ShoppingList に設定します。
o
SQL プロパティを次のように設定します。
delete from Item where ShopItem = :ShopItem
o
Params プロパティの拡張([...])ボタンを選択します。
o
ShopItem パラメータを選択し、DataType を ftString に設定します。
3. フォーム デザイナで DeleteButton コンポーネントをダブルクリックします。このイベ
ント ハンドラに次のコードを追加します。
procedure TForm1.ButtonDeleteClick(Sender: TObject);
var
TaskName: String;
begin
TaskName := ListBox1.Selected.Text;
try
SQLQueryDelete.ParamByName('ShopItem').AsString := TaskName;
SQLQueryDelete.ExecSQL();
Item.Refresh;
ButtonDelete.Visible := ListBox1.Selected <> nil;
except
on e: Exception do
begin
SHowMessage(e.Message);
end;
end;
end;
Embarcadero Technologies
135
iOS 上のローカル データベース ファイルに接続するようコー
ドを変更する
このアプリケーションの基本的な機能の実装はこれで終わりです。[データ エクスプローラ]
で作業をしたときに、Windows 上にデータベース ファイルを作成しました。このデータベー
ス ファイルは、iOS デバイスにコピーするかその場で作成しなければ、iOS デバイス上で使用
できません。
SQLite のデータベースおよびテーブルは次の手順で作成することができます。
iOS デバイス上での SQLite データベースの場所を指定する
1. フォーム デザイナで ShoppingList コンポーネントを選択します。
2. [オブジェクト インスペクタ]で BeforeConnect イベントをダブルクリックします。
3. このイベント ハンドラに次のコードを追加します。
procedure TForm1.SQLConnectionSQLiteBeforeConnect(Sender: TObject);
begin
{$IFDEF IOS}
ShoppingList.Params.Values['Database'] := GetHomePath + PathDelim +
'Documents' + PathDelim + 'shoplist.s3db';
{$ENDIF}
end;
GetHomePath 関数からは、iOS アプリケーションの実際のホームの場所が返されます。定数
System.SysUtils.PathDelim を使用することが推奨されています。これは、\ や / などの区切り
文字をハードコードするのではなく、PathDelim によってターゲット プラットフォームの固有
のパス区切り文字を使用できるためです。
テーブルが存在しなければ作成する
SQLite では、CREATE TABLE IF NOT EXISTS 文を使用すると、テーブルが存在しない場合に
作成することができます。テーブルの作成は、TSQLCOnnection コンポーネントがデータベー
スに接続した後、TSQLDataSet コンポーネントがテーブルに接続する前に行うことができます。
手順は次のとおりです。
1. フォーム デザイナで ShoppingList コンポーネントを選択します。
2. [オブジェクト インスペクタ]で AfterConnect イベントをダブルクリックします。
Embarcadero Technologies
136
3. このイベント ハンドラに次のコードを追加します。
procedure TForm1.ShoppingListAfterConnect(Sender: TObject);
begin
ShoppingList.ExecuteDirect('CREATE TABLE IF NOT EXISTS Item (ShopItem
TEXT NOT
NULL)');
end;
Embarcadero Technologies
137
iOS シミュレータまたは iOS デバイス上でアプリケーション
を実行する
これでアプリケーションを実行する準備が整いました([実行|実行]を選択します)。
アプリケーション実行時に問題が発生した場合には、「トラブルシューティング」で説明して
いる手順を実施してください。
関連項目
•
iOS アプリケーションで InterBase ToGo を使用する
•
iOS クライアント アプリケーションからエンタープライズ データベースに接続する
•
XE3 での SQLite のサポート
Embarcadero Technologies
138
iOS クライアント アプリケーションからエンター
プライズ データベースに接続する
このチュートリアルを開始する前に、次のチュートリアルを読んで実行してください。
•
iOS アプリケーションでリスト ボックス コンポーネントを使用してテーブル ビューを表示
する
•
iOS アプリケーションで InterBase ToGo を使用する
このチュートリアルでは、iOS クライアント アプリケーションからエンタープライズ データベ
ースに接続する方法を説明します。
エンタープライズ データベースに接続するには、クライアント ライブラリが必要です。クライ
アント ライブラリは、たいてい、データベース ベンダから DLL 形式で提供されています。し
かし、iOS デバイスの場合はクライアント ライブラリが提供されていないため、この方法は使
用できません。この問題を解決するには、エンタープライズ データベースに接続するための中
間層を開発して、iOS アプリケーションがその中間層と通信できるようにします。RAD Studio
では、ほとんどコーディングしないで中間層を開発できるよう(そして中間層にアクセスでき
るよう)、DataSnap フレームワークを提供しています。このチュートリアルでは、中間層を
開発し、その後 iOS クライアントを開発する手順を説明します。
Embarcadero Technologies
139
中間層(DataSnap サーバー)を作成する
まず、データベース サーバーのテーブルを公開する DataSnap サーバーを作成します。このチ
ュートリアルでは DataSnap サーバー VCL フォーム アプリケーションを DataSnap サーバーと
して使用します。
メモ: このチュートリアルの DataSnap サーバー(VCL アプリケーション)は、多層データベ
ース アプリケーションの中間層として機能します。DataSnap サーバーのインスタンスを作成
して後で削除することは簡単にできます。基本の手順を理解した後で、中間層を Windows サ
ービス アプリケーションに変換することができます。
DataSnap サーバー VCL アプリケーションを作成する
1. 新規プロジェクトを作成します。[ファイル|新規作成|その他...]を選択し、[新規
作成]ダイアログで[Delphi プロジェクト|DataSnap Server|DataSnap Server]を選
択して、新しい Delphi プロジェクトを作成します。
2. [DataSnap サーバーの新規作成]ウィザードが開くので、それに沿って進みます。変
更しなければならないパラメータはそれほど多くありません。
Embarcadero Technologies
140
3. [DataSnap サーバーの新規作成]ウィザードで、次のように指定します。
1. 最初のステップで、アプリケーションの種類に[VCL フォーム アプリケーショ
ン]を選択します。
2. 2 番目のステップで、[サーバーの機能]の一覧から、[TCP/IP]プロトコルと、
[サーバー メソッド クラス]および[サンプル メソッド]を選択します。
3. 3 番目のステップでは、TCP/IP 通信ポートをデフォルトの 211 のままにします。
こうしておくと、クライアントとサーバーの間の通信が、デフォルトの
DataSnap ポートを通じて行われます。
4. 最後の(4 番目の)ステップで、[サーバー メソッド クラスの上位クラス]に
[TDSServerModule]を選択します。
4. フォーム ユニットを「DataSnapServerUnit.pas」という名前で保存します。
5. DataSnapServerUnit に移動し、フォームの Name プロパティを「DSServerForm」に変
更します。
6. サーバー メソッド ユニット(デフォルトではウィザードによって ServerMethodsUnit1
という名前で作成されています)を「ServerModuleUnit.pas」という名前で保存します。
Embarcadero Technologies
141
7. サーバー コンテナ ユニット(デフォルトではウィザードによって
ServerContainerUnit1 という名前で作成されています)を「ServerContainerUnit.pas」
という名前で保存します。
8. 新しいプロジェクトを「DataSnapServerProject.droj」という名前で保存します。
9. [プロジェクト マネージャ]で ProjectGroup1 を選択し、プロジェクトを
「DataSnapTutorialProjectGroup.groupproj」という名前で保存します。
DataSnap サーバー上のデータセットを定義する
1. ServerContainerUnit.pas ファイルに移動し、implementation セクションの uses 句を
「uses Winapi.Windows, ServerModuleUnit;」に置き換えます。
2. ServerModuleUnit.pas ファイルに移動します。
3. フォーム デザイナで、サーバー モジュールの Name プロパティを
「DSServerModule_EMPLOYEE」に変更します。
4. サーバー モジュール上に以下のコンポーネントを構成します。
o
TSQLConnection コンポーネントをサーバー モジュール上にドロップし、以下
のプロパティを設定します。
TSQLConnection は、データベース サーバーへの dbExpress 接続をカプセル化したも
のです。

Name プロパティを「SQLConnection_EMPLOYEE」に設定します。

LoginPrompt プロパティを False に設定します。

Driver を InterBase に設定します。

Driver ノードを展開し、DataBase プロパティを
「C:\Users\Public\Documents\RAD
Studio\11.0\Samples\Data\EMPLOYEE.GDB」に設定します。

Connected プロパティを True に設定します。エラーが発生したら、
Driver 以下のプロパティを再確認してください。
Embarcadero Technologies
142
o
TSQLDataSet コンポーネントをサーバー モジュール上にドロップし、以下のプ
ロパティを設定します。
TSQLDataSet は、dbExpress を使って取得されたデータを表します。

Name プロパティを「SQLDataSet_EMPLOYEE」に設定します。

SQLConnection プロパティを SQLConnection_EMPLOYEE に設定しま
す。

CommandType プロパティを ctTable に設定します。

CommandText プロパティを「EMPLOYEE」に設定します。

Active プロパティを True に変更します。エラーが発生したら、設定し
たプロパティを再確認してください。
o
TDataSetProvider コンポーネントをサーバー モジュール上にドロップし、以下
のプロパティを設定します。
TDataSetProvider では、データセットのデータをパッケージにまとめ、転送可能なデ
ータ パケット(複数可)を DataSnap クライアントに渡します。

Name プロパティを「DataSetProvider_EMPLOYEE」に設定します。

DataSet プロパティを SQLDataSet_EMPLOYEE に設定します。

Embarcadero Technologies
143
メモ: このチュートリアルでは、例として InterBase を使用します。ただし、どのようなデー
タベース サーバーにも同じ手順で接続できます。適切なドライバを選択し、使用するデータベ
ースを指すよう他のプロパティを設定してください。
DataSnap サーバーのデータセットを公開する
これで、データセットと次のレイヤ向けにデータをパッケージ化するデータセット プロバイダ
とを含んだ新しいサーバー モジュールを作成できました。次のステップでは、サーバー モジュ
ールを DataSnap クライアントに公開します。
1. フォーム デザイナで ServerContainerUnit を開きます。
2. DSServerClass1 を選択し、OnGetClass イベントの既存のイベント ハンドラを更新し
ます。DSServerClass1 のイベント ハンドラに以下のコードを追加します。
procedure TServerContainer1.DSServerClass1GetClass(DSServerClass: TDSServerClass;
var PersistentClass: TPersistentClass);
begin
PersistentClass := TDSServerModule_EMPLOYEE;
end;
このイベント ハンドラで、DataSnap サーバーは、プロバイダとこのクラスの public メソッド
群を DataSnap クライアントに対して公開します。前のセクションの手順を実施していると、
これで DataSetProvider_EMPLOYEE データセット プロバイダ コンポーネントを DataSnap ク
ライアントに公開することになります。
DataSnap サーバーを実行する
DataSnap サーバーの実装は終了しました。DataSnapServerProject.exe を右クリックし、
[デバッガを使わずに実行]を選択します。
Embarcadero Technologies
144
これで、お使いの Windows マシン上で DataSnap サーバーが動作していることがわかります。
DataSnap サーバーには UI 要素がないため空のフォームのように見えますが、この時点ではそ
れで問題ありません。
DataSnap サーバーに接続する iOS アプリケーションを作成
する
次のステップでは iOS クライアント アプリケーションを作成します。
1. [プロジェクト マネージャ]で DataSnapTutorialProjectGroup を右クリックし、[新
規プロジェクトを追加...]を選択します。
2. [Delphi プロジェクト]ページで[FireMonkey モバイル アプリケーション]を選択し
ます。
Embarcadero Technologies
145
3. 新しいユニットを「DataSnapClientUnit.pas」という名前で保存します。
4. 新しいプロジェクトを「DataSnapClientProject.droj」という名前で保存します。
5. DataSnapClientUnit を開き、フォームの Name プロパティを「DSClientForm」に変更
します。
6. 以下のコンポーネントを FireMonkey モバイル フォーム デザイナにドロップします。
o
TSQLConnection コンポーネント(SQLConnection1)
TSQLConnection は、データベース サーバーへの dbExpress 接続をカプセル化したも
のです。DataSnap サーバーもサポートされています。

Driver プロパティを DataSnap に設定します。

Driver プロパティを展開し、HostName プロパティを DataSnap サーバ
ーのホスト名に設定します。

LoginPrompt プロパティを False に設定します。

Connected プロパティを True に設定します。
エラーが発生したら、設定したプロパティを再確認してください。
o
TDSProviderConnection コンポーネント(DSProviderConnection1)
TDSProviderConnection コンポーネントでは、dbExpress を使った DataSnap サーバー
への接続を提供しています。

SQLConnection プロパティを SQLConnection1 に設定します。

ServerClassName を「TDSServerModule_EMPLOYEE」に設定します。
この名前は、DataSnap サーバーのサーバー モジュールのクラス名と一
致する必要があります。

Connected プロパティを True に設定します。
Embarcadero Technologies
146
o
TClientDataSet コンポーネント(ClientDataSet1)
TClientDataSet は、データベース非依存のデータセットを実装したもので、別のデータ
セットから取り出したレコードのローカルのインメモリ バッファとして使用できます。

RemoteServer プロパティを DSProviderConnection1 に設定します。

ProviderName プロパティを DataSetProvider_EMPLOYEE に設定します。
この名前は、DataSnap サーバーのプロバイダの名前と一致する必要があ
ります。

o
Active プロパティを True に設定します。
TListBox コンポーネント

Align プロパティを alClient に設定します。
7. [LiveBinding デザイナ]を開き、データとユーザー インターフェイスを次のように接
続します。
1. ClientDataSet1 の FULL_NAME をクリックし、マウス カーソルを ListBox1 の
Item.Text へとドラッグします。
2.
これで、iOS 上に DataSnap クライアントを作成し、構成できました。
DataSnap サーバーから取り出されたデータを IDE で確認できるはずです。
Embarcadero Technologies
147
MIDAS ライブラリを iOS シミュレータに配置する
iOS シミュレータでアプリケーションを実行するには、以下のファイルを配置する必要があり
ます。
•
MIDAS ライブラリ
1. [プロジェクト|配置]を選択して配置マネージャを開きます。
2. [機能ファイルの追加](
)を選択します。
3. 次のモジュールを選択して[OK]をクリックし、配置マネージャを閉じます。
o
MIDAS ライブラリ
Embarcadero Technologies
148
iOS シミュレータまたは iOS デバイス上でアプリケーション
を実行する
これでアプリケーションを実行する準備が整いました。
[プロジェクト マネージャ]で[iOS シミュレータ]または[iOS デバイス]のターゲット プ
ラットフォームを選択し、アプリケーションを実行します。IDE 内で実行したときと同様に、
データを参照することができるはずです。
関連項目
•
iOS アプリケーションで InterBase ToGo を使用する
•
iOS アプリケーションで SQLite を使用する
•
DataSnap アプリケーションの開発
•
多層データベース アプリケーションを理解する
•
Datasnap.DSServer.TDSServer
Embarcadero Technologies
149
Fly UP