t1

Similar documents
Embarcadero Developer Camp

CodeGear Developer Camp

Microsoft PowerPoint - DELPHI�礔.ppt

Microsoft PowerPoint - visualprogram.ppt

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

25th Developer Camp

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

21st Embarcadero Developse Camp W5

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

f5

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

Microsoft Word - サンプル _図面編集_.doc

開発者が知りたい実践プログラミングテクニック! ~明日から使えるテクニック集~

アプリケーション

PowerPoint2003基礎編

Prog2_12th

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

ルーレットプログラム

スライド 1

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

Microsoft Word - P doc

Delphi/400でFlash動画の実装

平成 30 年度 プログラミング研修講座 岩手県立総合教育センター

L N P Y F C T V W Z I X Pentomino Form Name Caption Position FormMain podesktopcenter

Mapmakerfor の手順下絵を準備 作者の設定した大きさで作成する場合 下絵にする地図を挿入 トリミングと大きさの調整 大きさを調整した画像を保存 下絵を背景に設定 作成画面の大きさを調整 1 自分で用意した下絵を背景にする場合 下絵を背景に設定 作成画面の大きさを調整 画像が大きい場合シート

PowerPoint2007基礎編

Webコンポーネントのカスタマイズ入門

PowerPoint プレゼンテーション

EDITOR を起動する 1. MS-3 をパソコンと USB ケーブルで接続し MS-3 の電源を入れます MS-3 とパソコンを USB ケーブルで接続しなくても ライブセットの編集はできます ただし パッチをエディットした結果を保存することはできません 保存にはパソコンとの接続が必要です パッ

印刷アプリケーションマニュアル

10th Developer Camp - B5

GUI プログラミング第 4 Graph ~ 手書認識と関数グラフ描画 ~ マウスで数式を書いて認識し 関数グラフを描画する < 手書認識とグラフ描画のステップ> ステップ 1_1 フレームの作成 ステップ 1_2 マウスで自由に線を書く ステップ 2-1 手書認識認識結果を標準出力する ステップ

Microsoft Word -

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

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

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

Microsoft Word - VB.doc

25th Developer Camp

CodeGear Developer Camp

C#の基本

スライド 1

ファイルを直接編集する画面を切り替えることができる. 図 3 標準のレイアウトを削除する (2) グラフィカル レイアウト画面で LinearLayout(Vertical) を追加するパレットウィンドウの レイアウト の中にある LinearLayout(Vertical) をドラッグして, 編集

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

2004年度情報リテラシーⅢ

Embarcadero Developer Camp

VB.NET解説

データ構造とアルゴリズム論

タッチディスプレイランチャー

PowerPoint プレゼンテーション

やさしくPDFへ文字入力 v.2.0

5th CodeGear Developer Camp [A6]

グラフィックトレーニング 概要.NET のグラフィック描画は どんなことができるのでしょうか? グラフィックオブジェクトやグラフィック環境 概念を理解するためには クラスを使って馴れることが近道です 本 書に記載されているコードをカットアンドペーストして 一つ一つの機能を体験してください 前提 グラ

クイックスタートマニュアル目次 スマホサイトビルダーモビークとは? モビークの特徴 ドラッグ& ドロップで簡単編集 スタイリッシュなデザイン部品 PC サイトと自動連動 最高のSEO 対策導入までの流れ STEP1 初期デザイン設定 STEP2 ページの登録 STEP3 スマホページの編集 STEP

1. マイピクチャの中に [ 講習用 ] フォルダーを作成し その中に上記の図のような階層構造のフォルダーを作成します (1) まず マイピクチャの中に [ 講習用 ] フォルダーを作成します [ コンピューター ] [ マイピクチャ ]1 [ マイピクチャ ] フォルダ内 ( 右枠 ) の空白部分

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

Prog2_15th

Word2007 Windows7 1 パンジーを描こう 暮らしのパソコンいろは 早稲田公民館 ICT サポートボランティア

PDF Convertor for mac スタートアップガイド

extChatText.pdf

< F2D D E6A7464>

グラフィックス

RAYOUT

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

ホームページ・ビルダー16

Microsoft Word - HowToConvertIdwToDwg.doc

extCountdown.pdf

Userコントロール

やさしく名刺ファイリング Pro とは? OKI 複合機のスキャナ機能を活用し 大量の名刺やハガキを文字認識 (OCR) し データベース化することで名刺情報を管理 活用するソフトフェアです < やさしく名刺ファイリング Pro 起動画面 > ネットワーク経由で直接保存 名刺スキャン PC の共有フ

2.Picasa3 の実行 デスクトップの をダブルククリック 一番最初の起動の時だけ下記画 面が立ち上がります マイドキュメント マイピクチャ デスクトップのみスキャン にチェックを入れ続行 これはパソコン内部の全画像を検索して Picasa で使用する基本データを作成するものですが 完全スキャン

Microsoft PowerPoint - OOP.pptx

Developer Camp

スライド 1

28th Embarcadero Developer Camp

Microsoft Word - 補足説明_Win7_Server2008R2__R1.doc

グラフィックス 目次

B Simon (Trump ) SimonU.pas SimonP.dpr Name FormSimon Caption Position podesktopcenter uses Windows, Messages, SysUtils,

PowerPoint 2010 の基本操作 1 PowerPoint 2010 を起動し, 作業画面や表示モードを確認しましょう (1) デスクトップ画面の左下のスタートボタンを押し, すべてのプログラム を選択します (2) Microsoft office から Microsoft Office

Design with themes — Part 1: The Basics

プロセス間通信

PowerPoint プレゼンテーション

8th CodeGear Developer Camp

「DataSnapユースケース研究」 多層技術の概要と最適化、実践テクニック

スライド 1

ふれんずらくらく流通図面マニュアル

Microsoft Word IL3_1.doc

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

PowerPoint プレゼンテーション

■新聞記事

2/10 ページ 対象画像の選択 エルスプローラなどで対象の ( 縮小する ) 画像が入っているフォルダーを開きます 例えば 次の通りです 例では 下のフォルダーから反転しているファイル ( つまり 2006_ JPG ) を縮小するものとします 以下の説明では 対象画像 と呼びます

目次 新規ユーザー登録... 3 初期設定... 6 (1) 特定商取引法に基づくページのURLを設定する... 7 (2) コンバージョン測定タグを設定する... 7 サイトを作成してみよう

Prog2_6th

SILAND.JP テンプレート集

1 / 10 vlookup(true の場合 ) 奨励金比較表の作成 < 処理条件 > の 5. に < 出力形式 2> のような奨励金比較表を作成しなさい とあるので 作成した 2 つの表の下に < 出力形式 2> を見ながら 入力していきます 1. まず A25 をクリックします 2. 奨励金

関数の定義域を制限する 関数のコマンドを入力バーに打つことにより 関数の定義域を制限することが出来ます Function[ < 関数 >, <x の開始値 >, <x の終了値 > ] 例えば f(x) = x 2 2x + 1 ( 1 < x < 4) のグラフを描くには Function[ x^

28th Embarcadero Developer Camp

939061j

21st Embarcadero Developer Camp T8

2007年度版

Microsoft PowerPoint ppt

1 フリーページを表示する 1-1 フリーページのカテゴリを作成します フリーページのカテゴリの情報を入力します 1 複数のフリーページを記事のジャンルや種類で分け その見出しを入力します お店ページの左サイドバーに表示します 2 消費者が 検索エンジンで検索するであろう 記事の特長や内容をあらわす

Transcription:

T1 Delphi/C++ テクニカルセッション VCL ユーザーのための FireMonkey 入門 株式会社シリアルゲームズアプリケーション第 3 開発部取締役細川淳

アジェンダ はじめに 画像付きエディットを作る アニメーションを見る まとめ 2 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

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

はじめに 今回の資料は後から見ても解るように詳しい操作手順 が書いてあります! 時間が余った場合 複数行の TListBoxItem を作ります ですが このセッションを最後まで見れば 誰でも作成できるよ うになっているはずです!

はじめに VCL と FMX VCL - Visual Component Library Windows の進化とともに発展してきたコンポーネント群 FMX - FireMonkey マルチプラットフォームに対応したコンポーネント群

はじめに VCL の考え方 Windows のコントロールがベース 見た目は Windows が用意したものになる 最近は Style によって見た目を変更できる

はじめに FMX の考え方 それぞれの OS でコントロールの見た目が違う めんどくさいから全部自分で描いちゃおうZE! Style で見た目をコントロール OS ごとに DirectX / OpenGL / OpenGL ES で描画する

画像付きエディットを作る 9 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

画像付きエディットを作る VCL では 1. TEdit 継承したエディットを作る TImageEdit とします 2. TImage を作成し Parent を TEdit にする 3. TEdit のテキストエリアを変更する 実際に作ってみます

TImageEdit unit uimageedit; interface Windows に特化しているので Winapi をそのまま uses に uses Winapi.Windows, Winapi.Messages, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.StdCtrls, Vcl.ExtCtrls; TEdit を継承 type TImageEdit = class(tedit) private FImage: TImage; procedure ImageChange(Sender: TObject); protected procedure DoImageChanged; virtual; procedure SetParent(iParent: TWinControl); override; procedure WndProc(var Message: TMessage); override; procedure Resize; override; 画像用 TImage 11 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

TImageEdit public constructor Create(iOwner: TComponent); override; destructor Destroy; override; published property Image: TImage read FImage; end; implementation uses Vcl.Imaging.Jpeg, Vcl.Imaging.PngImage; 外から変更できるように property として公開 Jpeg と Png を表示するために uses 12 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

TImageEdit { TImageEdit } constructor TImageEdit.Create(iOwner: TComponent); begin inherited; FImage := TImage.Create(Self); FImage.SetBounds(1, 1, 16, 16); FImage.Stretch := True; FImage.Picture.OnChange := ImageChange; FImage.Parent := Self; end; 画像用 TImage を生成 destructor TImageEdit.Destroy; begin FImage.DisposeOf; 画像用 TImage を廃棄 inherited; end; 13 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

TImageEdit procedure TImageEdit.DoImageChanged; begin if Parent = nil then Exit; SendMessage( Handle, EM_SETMARGINS, EC_LEFTMARGIN or EC_RIGHTMARGIN, MakeLong(FImage.Width + 2, 0)); Invalidate; end; 画像が変更されたときに EDIT のテキストマージンを設定 テキストが入力できるエリアの 左右のマージンを指定できるママージンージンprocedure TImageEdit.ImageChange(Sender: TObject); begin DoImageChanged; end; 14 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

TImageEdit procedure TImageEdit.Resize; begin inherited; if Parent <> nil then FImage.SetBounds(1, 1, ClientHeight, ClientHeight); end; procedure TImageEdit.SetParent(iParent: TWinControl); begin inherited; DoImageChanged; end; TImage の大きさを ClientHeight 四方の正方形に 15 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

TImageEdit procedure TImageEdit.WndProc(var Message: TMessage); begin case Message.Msg of CN_CTLCOLORSTATIC, CN_CTLCOLOREDIT: if FImage.Picture.Graphic <> nil then ExcludeClipRect( Message.WParam, end; inherited; end; end. 1, 1, 1 + ClientHeight, 1 + ClientHeight); TImage の部分を描画しないようにクリッピング ( クリッピングしないと Text の背景色で塗りつぶされてしまう ) 16 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

TImageEdit を使う側 type TForm1 = class(tform) procedure FormCreate(Sender: TObject); private FImageEdit: TImageEdit; public end; implementation procedure TForm1.FormCreate(Sender: TObject); begin FImageEdit := TImageEdit.Create(Self); FImageEdit.Image.Picture.LoadFromFile('C: temp luna6.jpg'); FImageEdit.SetBounds(10, 10, 250, FImageEdit.Height); FImageEdit.Parent := Self; end; 17 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

実行結果 読み込んだ画像が確かに表示されている

画像付きエディットを作る FMX では コードは 書かない!

画像付きエディットを作る FMX では どうするか? スタイルを使います! 実際に作ってみます

画像付きエディットを作る マルチデバイスアプリケーションを新規作成 TEdit をドロップします

画像付きエディットを作る TEdit を右クリックして カスタムスタイルの編集 を選びます

画像付きエディットを作る TEdit の標準スタイルがコピーされます これに修正をしていきます

画像付きエディットを作る TImage を edit1style1 にドロップ!

画像付きエディットを作る ドロップされた TImage 画像を選ぶ ドロップされた TImage のプロパティ MultiResBitmap

画像付きエディットを作る TImage の表示をマイナス座標に置く ( ) 本来なら親レイアウトに TAlignLayout.Left などで置きますが TEdit がプレゼンテーションレイヤーなどに分かれており 正しく作らないとキャレット位置がずれたりします そのため ここでは簡単にこのようしています

画像付きエディットを作る 適用して閉じる を押します StyleBook も自動的に作成され追加されます すると! 画像が表示されたエディットができています!

画像付きエディットを作る 実行すると 正しく画像が表示されたエディットになっています

画像付きエディットを作る VCL と違って FMX 版は 画像を変えられない?? VCL 版は TImage がプロパティとして出ていたので Image.Picture.LoadFromFile などが使えた!

画像付きエディットを作る 心配無用じゃ!! スタイルをもう一度開くんじゃ スタイルを編集するためには StyleBook1 をダブルクリックします _ 人人人人人人人 _ > 突然の David I. < Y^Y^Y^Y^Y^Y^Y^Y

画像付きエディットを作る TImage の StyleName を image に設定します そして 適用して閉じる で閉じます

画像付きエディットを作る OnApplyStyleLookup イベントハンドラを書きます

画像付きエディットを作る implementation {$R *.fmx} uses FMX.Objects; TImage は FMX.Objects に宣言されているので uses します procedure TForm1.Edit1ApplyStyleLookup(Sender: TObject); var Image: TImage; begin Image := Edit1.FindStyleResource('image') as TImage; Image.Bitmap.LoadFromFile('C: temp LunaGiro.jpg'); end; StyleName で指定した名前でスタイル中のコントロールを取り出します 33 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

画像付きエディットを作る 実行時画像が変わっています

画像付きエディットを作る TStyledControl の子孫は全て OnApplyStyleLookup を持ちます FindStyleResource メソッドでスタイル内のコントロールを 取得できます

画像付きエディットを作る 注意したいのは OnApplyStyleLookup イベントより前ではスタイルのコントロールは生成されていない! ということです たとえば TForm.OnCreate で FindStyleResource を呼んでも値はとれません

画像付きエディットを作る StyleLookup と StyleName? Style を理解する前 StyleLookup と StyleName の 2 つが存在する理由がわかりませんでした いかがでしょう?

画像付きエディットを作る StyleName その名の通り スタイルの名前 StyleLookup や FindStyleResource で指定します StyleLookup 適用したいスタイルの名前を指定します

画像付きエディットを作る もう 1 つの冴えたやり方を紹介します たった 1 つではない!!

画像付きエディットを作る 2 パネルを置いてカスタムスタイルの編集をクリックして スタイルエディタを開きます 枠線は要らないので Stroke プロパティの Kind を None にします

画像付きエディットを作る 2 TLayout は何もしないコンテナ TEdit も普通にスタイルにおける!!! TImage, TLayout, TEdit を上のように置きます TEdit は TLayout の子供に! FMX は全てのコントロールが親 ( コンテナ ) になれます!!

画像付きエディットを作る 2 Image の Align を Client に

画像付きエディットを作る 2 Layout の Align を Right に Layout の Margins.Left に 4 を指定

画像付きエディットを作る 2 Edit の Align を VertCenter に

画像付きエディットを作る 2 TImage と TLayout の HitTest プロパティは Flase にする! HitTest プロパティが True の場合マウスの押下がコントロールに通知されます 親には通知されません 特に必要ではない時は False にします

画像付きエディットを作る 2 ここまでの操作で 次のようになります ついでに TImage.MultiResBitmap に画像を読み込んでおきます TImage TEdit TLayout Margins.Left による空隙

画像付きエディットを作る 2 設計時 実行時 TPanel なのに! 文字が入力できている!

TPanel のスタイルにする利点はコントロールのリサイズに追随し画像のサイズも変わるところ

画像付きエディットを作る 2 FMX にとってコントロールとは 素体 でしかない スタイルが変わると 機能 も変わってしまう TPanel のスタイルに TEdit を付与できる VCL のコントロールは機能そのものであった!

画像付きエディットを作る 2 ここで冒頭のスライドを思い出してください

画像付きエディットを作る 2 FireMonkey.Style は 見た目だけでなく 機能を持たせられる!

アニメーションを使う 53 本文書の一部または全部の転載を禁止します 本文書の著作権は 著作者に帰属します

アニメーションを使う 最近のリッチなアプリケーションでは当たり前のマウス オーバーで色が変わる仕組みはどうやっているので しょうか?

アニメーションを使う VCL では 1. TTimer を置く 2. OnEnter 1. Brush.Color を初期カラーに変更し描画 2. Timer.Enabled := True にする 3. Timer.OnTimer で Brush.Color を計算し描画 4. OnLeave で TTimer.Enabled := False このような手順が必要になります

アニメーションを使う FMX では!! これもスタイルでやります!!

アニメーションを使う ここでは マウスオーバーで色が変わるパネルを作ります 1. 新規にマルチデバイスアプリケーションを作ります 2. TPanel をます 3. TPanel のカスタムスタイルを編集します

アニメーションを使う TColorAnimation を panel1style の下にドロップします ドロップ後 Animation クラスは全て親に対して働きます

アニメーションを使う TColorAnimation のプロパティ値を PropertyName StartValue Trigger TriggerInverse Fill.Color Black IsMouseOver = True IsMouseOver = False に設定します たったこれだけで! MouseOver 時に色を変更可能です!

アニメーションを使う MouseOver で色がふわっと変わる!

アニメーションを使う TAnimation PropertyName 親のプロパティ名が自動的にリストアップされて表示される そのアニメーションクラスで適用可能なもの TColorAnimation では Fill.Color / Stroke.Color がリストアップされていた

アニメーションを使う TAnimation StartValue / StopValue アニメーション開始時の値と 終了時の値 StartValue はトリガーが掛かったときだけ指定されるので 親コンポーネントの対象を StartValue と同じ値にしておくと良い 今回は TPanel.Fill.Color を Black にしておく

アニメーションを使う TAnimation Trigger / TriggerInverse アニメーションを開始するきっかけ 親コントロールの Is~ プロパティが表示されている こちらは親コントロールに適用可能かどうかは判断されない TPanel には IsPress プロパティは存在しないが指定できる

はじめに FMX の考え方 それぞれの OS でコントロールの見た目が違う めんどくさいから全部自分で描いちゃおうZE! Style で見た目をコントロール OS ごとに DirectX / OpenGL / OpenGL ES で描画する Style は見た目だけではない! 色々な機能を持たせられる!!

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

まとめ VCL を使っていると勘違いしやすいポイント VCL ではこうやる を FMX のコントロールに求めがち その多くはスタイルで実現する FMX のスタイルは VCL スタイルと違い 見た目だけではない! スタイル側に機能を持たせるため FMX ではカスタムコントロールを作る事はほぼ無くなった

まとめ FMX スタイルを上手に使うには Shape カテゴリのコントロールを使う Shape カテゴリのコントロールは Style を作るため ( といって もいい ) のコントロール群 TLayout を使う TLayout ごとに Align を指定できる TLayout を複数使うと 複雑な Align も実現できる 今回の例でいえば TLayout には Right で右端に寄るようにし TEdit は VertCenter で垂直方向の真ん中に表示できた

付録 FMX でカスタムコンポーネントを作る場合とは? コンポーネントのユーザーに選択権を与える場合 たとえば 画像付きエディットでは 画像の選択 画像の位置の選択など ユーザーの意思が入る場合 スタイルで何とかするのは難しい こういった場合にはカスタムコンポーネントを作成します

Thank you!