ios 12, Android 9 時代の 今からでも始められるモバイル開発入門 第 36 回エンバカデロ デベロッパーキャンプ 株式会社シリアルゲームズ取締役 / AppDiv3 マネージャー細川淳 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

Similar documents
初 めての ios アプリケーション iphone Form TLabel TButton. 図. コントロールの 配 置 Button OnClick Button. 00

t1

新バージョンDelphi/400 XE7ご紹介 - マルチデバイスデザイナ機能で開発効率アップ! -

f5

Microsoft PowerPoint - はじめてのDataSnapアプリケーション_

「基礎から学ぶビジュアルAndroidアプリ開発 今日からあなたもAndroidデベロッパー」

「RAD Studio XE5によるマルチ言語/マルチデバイス開発の進め方」

C#の基本

PowerPoint プレゼンテーション

25th Developer Camp

Windows開発者のためのFireMonkeyモバイル開発入門

PowerPoint プレゼンテーション

Microsoft Word - VB.doc

V-Client for Mac ユーザーズガイド

ステップアップ! モバイルアプリケーション開発

25th Developer Camp

インテル(R) Visual Fortran コンパイラ 10.0

25th Developer Camp

目次 はじめに ツールのインストール ソフトウェアを起動する 画像ファイルの選択... 7 位置の調整... 8 背景色の設定 進捗バーの設定 パスワード設定 ユーザー情報の設定 設定

Android Layout SDK プログラミング マニュアル

フローチャート自動生成ツール yflowgen の使い方 目次 1 はじめに 本ツールの機能 yflowgen.exe の使い方 yflowgen.exe の実行方法 制限事項 生成したファイル (gml ファイル形式 ) の開

目次 はじめに... 3 システムの必要条件... 4 ライセンス認証... 4 アクティベーション... 6 開発... 7 手順 1. アプリケーションの作成... 7 手順 2. データソースの作成と代入... 7 手順 3. テンプレートの作成 手順 4. レポートビューアの追加

1 シミュレーションとは何か?

本記事では CITS のインストール方法について説明します CITS は macos や Windows Linux など Java がサポートされている OS で動作しますが 本シリーズはコードを書かない方を対象 としているので macos と Windows の両方について解説します 連載目次

InstallShiled FAQ デバイスドライバーのインストール 注 ) このドキュメントは InstallShield 2011 Premier Edition を基に作成しています InstallShield 2011 以外のバージョンでは設定名などが異なる場合もあります 概要 Instal

24th Embarcadero Developer Camp

スクールCOBOL2002

(6) コンボドライブのドライブ文字の変更 コンピュータの管理 ウィンドウの右下側フレームの CD-ROM 0 DVD (E:) と書かれた箱 ( 図 02-2) にマウスのポインタを合わせ, 右ボタンをクリックしてメニューを表示する メニューから ドライブ文字とパスの変更 (C)... を選択する

Microsoft PowerPoint - Borland C++ Compilerの使用方法(v1.1).ppt [互換モード]

OTRS10 他社システムOTRS呼出利用手順書

実習を行う上での心構えについて

TestDesign for Web

自宅でJava言語の開発環境を作る方法

Notesアプリが iPadで動くDomino Mobile Apps ご紹介

AppsME(kintone)_セットアップガイド

Prog2_6th

電子化シートマニュアル(インストール編)_ver106

モバイルアプリを Azure で作る - データを扱う Azure Storage を利 してデータを保存する 本稿では PHP と Windows Azure を使って 画像などのファイルを扱うアプリケーションを開発する方法を説明します Windows Azure Platform では データの

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

PowerPoint プレゼンテーション

1. 開発ツールの概要 1.1 OSS の開発ツール本書では OSS( オープンソースソフトウェア ) の開発ツールを使用します 一般に OSS は営利企業ではない特定のグループが開発するソフトウェアで ソースコードが公開されており無償で使用できます OSS は誰でも開発に参加できますが 大規模な

Delphi / C++Builder / RAD Studio 新バージョンの概要 第 36 回エンバカデロ デベロッパーキャンプ エンバカデロ テクノロジーズセールスコンサルタント 井之上和弘 筑木真志 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

Microsoft PowerPoint - DELPHI�礔.ppt

24th Developer Camp B1

Microsoft Word - プリンター登録_Windows XP Professional.doc

10th Developer Camp - B5

スライド 1

ER/Studio Data Architect 2016 の新機能

28th Embarcadero Developer Camp

Windowsユーザでも 手軽に作れるiPhoneアプリ

エプソン社製スキャナドライバImage Scan! for Linux インストール手順

Embarcadero Developer Camp

SmartBrowser_document_build30_update.pptx

クライアント証明書導入マニュアル

BizBrowser SmartDevice Android開発用スタートアップガイド

共有フォルダ接続手順 1 共有フォルダ接続ツールのダウンロード 展開 CSVEX のトップページから共有フォルダ接続ツールの zip ファイルをダウンロードします ダウンロードした zip ファイルを右クリックして すべて展開 を選択します (Windows 環境では zip ファイルを解凍しなくて

IOWebDOC

ランタイム版 Pro 版共通 症例登録システム 2018/12/11 Q & A 目次 1. 起動時のエラー... 2 Q11. " ファイル jsgoe_data3.fmp12 を開くことができません" と表示されます (Windows) 2 Q12. ショートカットから起動できません (Wind

インストール要領書

PowerPoint プレゼンテーション

産能大式フローチャート作成アドインマニュアル

21st Embarcadero Developer Camp

CubePDF ユーザーズマニュアル

目次 第 1 章はじめに 取扱いについて 記載内容について... 6 第 2 章基本操作 Excel Online を開く ファイル ( ブック ) を作成する ファイル ( ブック ) を開く..

ADempiere (3.5)

「C++Builderでモバイル開発にトライ! ベータ評価レポート」

AN1609 GNUコンパイラ導入ガイド


SketchUp2017 以上のバージョンからプラグインのインストールや管理を行うための 拡張機能マネージャー が追加され Ruby ファイル (*.rbz) の管理が簡単に行えるようになりました SketchUp2016 以下のバージョンは環境設定の 拡張機能 (Extensions) メニューよ

目次 1. AOS ユーザー登録サイト AOS ユーザー登録 AOS ライセンスキー登録 ios 版アプリ インストール 起動と新規登録 初期設定とバックアップ Andro

更新履歴 変更履歴 版数 リリース日 更新内容 第 1 版 2017/5/15 第 1 版発行 第 2 版 2017/7/13 更新履歴 変更内容を追加 (2ページ) 編集の前に を追加(8 ページ ) ブロックエディタ スマートモード エディタモード の説明を追加 (10~12 ページ ) ブロッ

Transcription:

ios 12, Android 9 時代の 今からでも始められるモバイル開発入門 第 36 回エンバカデロ デベロッパーキャンプ 株式会社シリアルゲームズ取締役 / AppDiv3 マネージャー細川淳 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

アジェンダ 最近のモバイル事情 Delphi 10.3 Rio について Delphi 10.3 Rio によるモバイル開発 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 2

最近のモバイル事情 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

ios 最近のトピック 2018/12 現在のバージョンは ios 12.1 OpenGL ES が非推奨になり Metal に移行 FireMonkey は OpenGL ES で記述されている FireMonkey が Metal で書き直されれば 既存コードも移行される? ギャンブル製のあるゲームが削除された 削除の基準が良くわからない iphone X からアスペクト比 2:1 の端末が出現 iphone X で ノッチ が出現 ノッチへの対応 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 4

Android 最近のトピック 2018/12 現在のバージョンは Android 9 (Pie) Android SDK Level 26 以上が必須に 2019/8 には 64bit が必須に Android 6 から実行時権限の取得が必要に Android 7 から動的リンクの禁止 バックグラウンド動作の制限 9 からはセンサーイベントやカメラなどへのアクセスが禁止される アスペクト比 2:1 の端末の増加 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 5

Delphi 10.3 Rio のトピック ios 12 に対応 Android SDK Level 26 に対応 言語の拡張 ARC の廃止 ( まずは Linux コンパイラから ) Linux AnsiString / AnsiChar 対応 FireMonkey が Android ネイティブコントロールに対応 FireMonkey で Android Z オーダーに対応 モバイルの開発は今がむしろ最適なタイミング! 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 6

Delphi 10.3 Rio について 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

モバイルプラットフォームに対する変更 ios ios 12 対応 Xcode 10 に対応 Xcode Command Line Tools も 10 に Android Android SDK Level 26 対応 Android SDK 対応以外にも多くの変更がありました 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 8

Android SDK Level 26 対応 Android SDK Level 28 がインストールされている? 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 9

Android SDK Level 26 対応 SDK マネージャでバージョンアップ 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 10

Android SDK Level 26 対応 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 11

Android SDK Level 26 対応 パスを修正 28.0.2 28.0.3 Adb.exe adb.exe 28.0.2 28.0.3 android-26 android-28 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 12

言語拡張 変数宣言ブロック var が必要なくなりました Inline var 宣言 Inline var 宣言によって型推論が可能に! 今までの var ブロックによる宣言では使用される目的 ( 右辺値 ) が不明なためやりたくてもできなかった 変数のスコープ 生存期間はブロック毎 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 13

言語拡張 var ブロック不要の変数宣言 (Inline var 宣言 ) // 文中での変数宣言 procedure Foo; begin var Bar: Integer; Bar := 0; end; // 文中での変数宣言と初期化を同時に procedure Foo; begin var Bar: Integer := 0; end; 大域変数の宣言とは違うので注意 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 14

言語拡張 型推論 // 型推論 procedure Foo; begin var Bar := 0; // 右辺値で自動的に型を特定する var Baz := 'Delphi 10.3 Rio!'; // 型推論と組み合わせると今までの for 文に var を付けるだけ! for var i := 0 to 100 do begin // 何か処理 end; end; 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 15

言語拡張 型推論 // 型推論 procedure Foo; begin var Qux := TDictionary<String, Integer>.Create; // 型推論と組み合わせると TPair<String, Integer> が不要に! for var Item in Qux do begin // 何か処理 end; end; 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 16

言語拡張 生存期間 procedure Foo; begin var Bar := 0; if Bar = 0 then begin var Baz := 1; end; // ここでは Bar は見えるが Baz は見えない Writeln(Bar, Baz); // Baz が見えないのでコンパイルエラー end; 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 17

言語拡張 生存期間 // 型推論 type IBar = Interface procedure Hello; end; TBar = class(tinterfacedobject, IBar) public procedure Hello; end; procedure TBar.Hello; begin Writeln('Hello, Delphi 10.3 Rio!'); end; 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 18

言語拡張 生存期間 procedure Foo; begin if something = 0 then begin var Bar: IBar := TBar.Create; Bar.Hello; end; // Bar はここを抜けるとき廃棄される end; 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 19

ARC 廃止 ARC = Automatic Reference Counting 参照カウントによるオブジェクト管理 NEXTGEN 定義済みシンボル Linux では無視される まずは Linux コンパイラからだが全てのコンパイラで廃止予定 開発中の macos 64bit コンパイラは最初から廃止されている 理由 TComponent の持つ Owner モデルとの関係 ARC 対応によるコンパイラの開発負荷増大 自動挿入コードによる速度の低下 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 20

ARC 対応 ARC 対応コンパイラでは type TBar = class(tobject) pubic procedure Baz; end; procedure Foo; var Bar: TBar; begin Bar := TBar.Create; Bar.Baz; end; // Bar はここで自動的に破棄 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 21

ARC 対応 ARC 未対応コンパイラでは type TBar = class(tobject) pubic procedure Baz; end; procedure Foo; var Bar: TBar; begin Bar := TBar.Create; try Bar.Baz; finally Bar.DisposeOf; // 自分で破棄 end; end; ARC が廃止されるため破棄メソッドは Free でも良くなるかも知れません Free: オブジェクトを廃棄 DisposeOf: オブジェクトを廃棄しても良いと伝える 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 22

ARC 廃止 TInterfacedObject の参照カウントは維持される TOCImport, TJavaImport は TInterfacedObject を継承している API へのアクセスコードはそのままで OK function SaveJavaBitmapToFile(const isrc: JBitmap; const ifilename: String): Boolean; var PngFile: JFile; // 自動廃棄 OS: JOutputStream; // 自動廃棄 begin Result := False; PngFile := TJFile.JavaClass.init(TAndroidHelper.JStringToString(iFileName)); OS := TJFileOutputStream.JavaClass.init(PngFile); try isrc.compress(tjbitmap_compressformat.javaclass.png, 100, OS); Result := True; finally OS.close; end; end; 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 23

Android ネイティブコントロール ControlType プロパティが有効化された TCalendar TEdit TSwitch ControlType = Styled ControlType = Platform 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 24

Android ネイティブコントロール Styled でも適切なスタイルを選べば とても美しい! DelphiStyle.com で購入した Calypso DelphiStyle.com は IDE のテーマを作っている所 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 25

Android Z Order Delphi 10.2 Tokyo までは下記の様な構造になっていて FireMonkey のコントロールは Native Control より上には描画できませんでした Tokyo まで Native Control Native Layer Native Control 各 OS に依存した構造上に自分で描画している FMX Control は 絵! OS から見た時に実体があるわけではない FMX Control FMX Control Native Layer FireMonkey World 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 26

Android Z Order 特定の条件を満たしたコントロールは Native コントロール上に置ける になりました Rio FMX Control Native Layer FMX Control 各 OS に依存した構造上に自分で描画している FMX Control は 絵! OS から見た時に実体があるわけではない FMX Control FMX Control Native Layer FireMonkey World 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 27

Androd Z Order 上に置ける条件 親が Native Control であること コントロールに ControlType プロパティがあること 少し奇妙ですが ControlType = Platform にすると Native コントロールの上に置けます 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 28

Android Z Order WebView の上に置いた例です NativeControl 上のコントロールはそこからはみ出せない ControlType = Styled のコントロールは依然として NativeControl の下に表示される 設計時 TButton ControlType = Platform TRectangle TButton ControlType = Styled 実行時 Rect FMX Button Web TWebBrowser FMX Form 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 29

Android 対応端末のアスペクト比 アスペクト比 2:1 の端末に対応する方法 AndroidManifest.template.xml の Application タグに " android.max_aspect " を追加します AndroidManifest.template.xml 抜粋 <application android:hardwareaccelerated="true" android:persistent="false" android:restoreanyversion="false" android:label="project1" android:installlocation="auto" android:debuggable="true" android:largeheap="false" android:icon="@ /ic_launcher" android:theme="@ /AppTheme"> ( 直下に ) 追加 <meta-data android:name="android.max_aspect" android:value="2.1" /> 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 30

Delphi 10.3 Rio によるモバイルアプリ開発 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

Delphi 10.3 Rio によるモバイルアプリ開発 FireMonkey や RTL が変わりましたが 基本的には今までと同じ! ですが 今までアプリケーションの作成を最初から最後まで紹介したことはありませんでした そこで 今回はチュートリアル的に全ての流れを紹介します 画像ビューアを作ります 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 32

ImageViewer の作成 まずは ファイル 新規作成 から マルチデバイスアプリケーション - Delphi を選びます 新規作成のメニューをカスタマイズしているのでデフォルトの並びにはなっていません ちなみに カスタマイズはここから 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 33

ImageViewer の作成 今回は 空のアプリケーション を選びます 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 34

ImageViewer の作成 まずは ファイル プロジェクトに名前を付けて保存 でプロジェクトを保存してしまいましょう 今回はこのようにしました プロジェクト名 :Project1 ImageViewer ユニット名 : Unit1 umainform 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 35

ImageViewer の作成 まずは TLayout をフォームに置きます この Layout の上にコントロールを配置していきます Form に直接置かないのは大幅なコントロールの配置し直しの時にやりやすいのと AdjustPan がやりやすいためです ドロップ 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 36

ImageViewer の作成 Layout1 を layoutroot として Align を Contents にします 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 37

ImageViewer の作成 次に StyleBook を置きます ドロップ 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 38

ImageViewer の作成 StyleBook にスタイルを読み込ませます このとき それぞれの OS に合ったスタイルがある場合は + ボタンを押してプラットフォームを追加します ここでは Android と ios を追加します 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 39

ImageViewer の作成 フォルダを開くアイコンをクリックして それぞれのスタイルを読み込みます ここでは DelphiStyles.com で購入した Calypso スタイルを使用します 読み込む前に Platform を選択 上のプラットフォームに合ったスタイルを選択 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 40

ImageViewer の作成 読み込ませ終わったら スタイルデザイナ タブを右クリックして このページを閉じる を選びます すると ダイアログが表示されるので はい を選びます 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 41

ImageViewer の作成 Form1 に StyleBook1 を設定します 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 42

ImageViewer の作成 次にエディタの上にある スタイル ドロップダウンで Android や ios を選ぶと設定されたスタイルによって見た目が変わります 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 43

ImageViewer の作成 ここから UI を構築します まずは下記の様に配置しました ImageControl1 Align = Client Button1 Align = Center Height = 40 Width = 160 Layout1 Align = Bottom 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 44

ImageViewer の作成 ActionList を置き 右クリック アクションリストの設定 をクリックします ドロップ 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 45

ImageViewer の作成 開いた編集ウィンドウの カテゴリ ペインを右クリックして 標準アクションの新規作成 を選びます 標準アクションクラスウィンドウが開くので TTakePhotoFromLibraryAction を選択します 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 46

ImageViewer の作成 ActionList1 の下に TakePhotoFromLibraryAction1 が生成されます 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 47

ImageViewer の作成 このアクションを Button1 に割り当てます アクションを割り当てると Text プロパティの値が代わり自動的に フォトライブラリ となります 必要に応じて変更します 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 48

ImageViewer の作成 次に TakePhotoFromLibraryAction1 の OnDidFinishTaking イベントをダブルクリックしてイベントハンドラを生成します 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 49

ImageViewer の作成 イベントハンドラは次のようにします procedure TForm1.TakePhotoFromLibraryAction1DidFinishTaking(Image: TBitmap); begin ImageControl1.Bitmap.Assign(Image); end; 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 50

ImageViewer の作成 プロジェクトマネージャでターゲットをダブルクリックして設定後 実行 (F9 か Shift+F9) します 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 51

ImageViewer の作成 ボタンを押して画像を選ぶと エラー表示も 無く落ちる! 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 52

ImageViewer の作成 Android 6.0 から実行時に権限を取得しなければならなくなりました Delphi 10.3 Rio であれば 今までと比べて簡単に取得できます 新しく追加された TPermissionsService を使います unit umainform; interface uses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts, System.Actions, FMX.ActnList, FMX.StdActns, FMX.MediaLibrary.Actions, FMX.Controls.Presentation, FMX.StdCtrls, FMX.Objects, System.Permissions; interface 部の uses に System.Permissions ユニットを追加 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 53

ImageViewer の作成 type TForm1 = class(tform) layoutroot: TLayout; StyleBook1: TStyleBook; ImageControl1: TImageControl; Layout1: TLayout; Button1: TButton; ActionList1: TActionList; TakePhotoFromLibraryAction1: TTakePhotoFromLibraryAction; procedure TakePhotoFromLibraryAction1DidFinishTaking(Image: TBitmap); procedure FormCreate(Sender: TObject); private procedure RequestPermissionResult( Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>); public end; 結果を受け取るイベントハンドラを追加 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 54

ImageViewer の作成 uses FMX.DialogService; {$R *.fmx} FormCreate で権限を要求 procedure TForm1.FormCreate(Sender: TObject); begin TPermissionsService.DefaultService.RequestPermissions( [ 'android.permission.read_external_storage' // 権限文字列 ], RequestPermissionResult ); end; 権限文字列は Androidapi.JNI.Os, Androidapi.Helpers ユニットを uses して JStringToString(TJManifest_permission.JavaClass.READ_EXTERNAL_STORAGE) とすることもできます その場合 {$IFDEF ANDROID} などでプラットフォームに依存しないようにします 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 55

ImageViewer の作成 procedure TForm1.RequestPermissionResult( Sender: TObject; const APermissions: TArray<string>; const AGrantResults: TArray<TPermissionStatus>); begin if AGrantResults[0] <> TPermissionStatus.Granted then begin TDialogService.MessageDialog( ' 権限がないため終了します ', TMsgDlgType.mtError, [TMsgDlgBtn.mbOK], TMsgDlgBtn.mbOK, 0, procedure(const AResult: TModalResult) begin Application.Terminate; end ); end; end; 権限を要求した結果貰えなかったら終了 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 56

ImageViewer の作成 これで再度実行すると 権限取得ダイアログが表示されます 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 57

ImageViewer の作成 許可すると無事に起動して 画像を取得できました 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 58

まとめ 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

Delphi 10.3 Rio で加速されたモバイルアプリ開発をやるなら? 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します 60

THANKS! www.embarcadero.com/jp 第 36 回エンバカデロ デベロッパーキャンプ 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します