Embarcadero Developer Camp

Similar documents
t1

25th Developer Camp

Microsoft PowerPoint - visualprogram.ppt

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

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

24th Developer Camp A4

23rd Developer Camp

CodeGear Developer Camp

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

21st Embarcadero Developer Camp T8

Prog2_12th

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

C#の基本

V-CUBE ミーティング

10th Developer Camp - B5

21st Embarcadero Developer Camp T8

25th Developer Camp

28th Embarcadero Developer Camp

Microsoft PowerPoint - DELPHI�礔.ppt

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

Prog2_9th

Delphi/400でFlash動画の実装

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

PowerPoint プレゼンテーション

Prog2_10th

Prog2_10th

24th Embarcadero Developer Camp

V8.1新規機能紹介記事

25th Developer Camp

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

21st Embarcadero Developer Camp T9

Microsoft Word - Mac版 Eclipseの導入と設定.docx

WebOTX V6 J2EEアプリケーションのトラブルシューティング

Prog2_4th

RAYOUT

f5

PE4 Training Text 2

CodeGear Developer Camp

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

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

OneDrive の初期設定を行う 1. に接続します 電子メールアドレス およびパスワードを入力して [ サインイン ] をクリックします 2. office365 ホーム画面より [OneDrive]

ボタンイベントアプリイベント処理を含むアプリとして, ボタンをもち, ボタンを押すと文字列を表示するアプリを作る. このアプリは,HelloWorld アプリを改造して作成するため, アプリ作成の途中からの手順を示す. 1. ボタンの設置 (1) レイアウトにボタンを追加するパレットの フォーム ウ

Prog2_6th

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

Microsoft PowerPoint ppt

Developer Camp

XAML Do-It-Yourself 第 3 回ベントとトリガー XML Do-It-Yourself 第 3 回目は ベント処理とトリガーについて学習します Windows フォームゕプリケーションでは たとえば ボタンが押された というベントに対応する処理 ( ベントハンドラー ) を記述する

PowerPoint プレゼンテーション

レコードとオブジェクト

Visio-.v...[..1.vsd

21st Embarcadero Developer Camp

第2章 Macintoshの基本操作

2. 顔が える野菜 果物 ラベル印刷システム 操作マニュアル Ver.2.01 株式会社シフラ

3Dプリンタ用CADソフト Autodesk Meshmixer入門編[日本語版]

設定をクリックしてください 初期設定をクリックします

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

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

スライド 1

Gate_PC0815

3 アプリケーションのインストール -セキュリティの警告 が出ますので インストール(I) をクリックしてください 4 インストーラーが起動します 下記画面が表示される場合がありますので その場合は下記手順に従って操作をしてください Windows によって PC が保護されました という画面が表示

ゲームプログラミング講習 第0章 導入

20th Embarcadero Developer Camp

プログラミング基礎I(再)

第 8 回の内容 クライアントサイド処理 JavaScript の基礎

Java言語 第1回

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

PowerPoint Presentation

2 / 8 オンデマンドダウンロード機能 を使用するときに次の制約があります 1. インターネットに接続されていない ( オフライン ) 場合は OneDrive エリアのみにあるファイルを開くことはできない 2.OneDrive エリアからダウンロードが完了するまでいくらか待たされるし ( 特に大

方法 4 の手順 パソコンの条件 を確認するための画面を表示する Windows8より前のパソコンでの確認方法 () スタートボタン をクリックする () ( マイ ) コンピューター と書いてある部分を右クリックする (3) プロパティ をクリックする (4) システムの画面が表示される Wind

CubePDF ユーザーズマニュアル

6118: (IMAP)Mac OS X Mail の設定方法 2014 年 7 月 1 日現在 IMAP を利用してメールサーバーにアクセスした場合 POP3 とは形式が異なり 読んだメールはパソコンに自動保存されませんのでご注意ください 大切なメールは リストの中から任意のフォルダにドラッグ &

Prog2_6th

テクニカルセミナーベストセレクション

ミガロ.製品 最新情報

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

第1章 ビジュアルプログラミング入門

My Cloud ホーム2.0 ユーザーズマニュアル

ULTRA DRIVE とは インターネット上 ( クラウド ) に大切なデータを保存することが出来る便利なアプリケーション ( オンラインストレージ ) です 本資料について ULTRA DRIVE サービスは マイナーバージョンアップ等もあるため 実際のクライアントと本資料に差分が発生する場合が

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

ULTRA DRIVE とは インターネット上 ( クラウド ) に大切なデータを保存することができる便利なアプリケ ーション ( オンラインストレージ ) です 本資料について ULTRA DRIVE サービスは マイナーバージョンアップ等もあるため 実際のクライア ントと本資料に差分が発生する場

Java, Delphi, C++Builderユーザのためのメモリリーク, ボトルネックの検出手順

8th CodeGear Developer Camp

モデリング操作ガイド (データベースモデリング編)

スライド 1

Embarcadero Developer Camp

DataWare-NETご利用ガイド

Ver.1.1

ADempiere (3.5)

Another Activity オブジェクトは生成されてもいないのである これは 後述の onpause メソッ ドの説明からも明らかである 翻訳 : A の onpause から返ってこない限り B は create されない ため ここで長い処理は行ってはならない 実際にトレースをおこなってみ

Windows用タブレットドライバー簡易ガイド

次 Ⅰ WEB シラバスシステムへのアクセス... 1 Ⅱ 教員 WEB サービス へのログイン... 2 Ⅲ パスワードの変更... 3 Ⅳ 受持講義の確認... 4 Ⅴ シラバスの... 5 Ⅵ シラバス 完了処理... 8 Ⅶ 作業中のデータの 時保存... 9 Ⅷ 既作成シラバスの引...

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

スライド 1

目次 1. HLA Fusion 3.0 がインストール可能な環境 HLA Fusion 3.0 のインストール HLA Fusion 3.4 のインストール 初期設定用データベース接続 ( 初めての方のみ ) 既存データベースのUpg

3. クラスリンク ( 先生の IP アドレス >:< ポート >) を生徒と共有して生徒がブラウザーから接続できるようにします デフォルトのポート番号は 90 ですが これは [Vision 設定 ] から変更できます Netop Vision Student アプリケーションを使

Microsoft Word - VisualC++利用法2.doc

Microsoft Word - VB.doc

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

すると メインメニューと呼ばれる DC さくらのメインウィンドウ部が表示されます ( 下の画面がスクリーンシ ョットです ) メインメニューは ウィンドウ右上の ボタンを押すと閉じます リスト内のアイテムは ダウンロードのタスクを表します ダウンロード状況を把握できます メニュー項目やボタンの説明は

Embarcadero Developer Camp

Transcription:

17 Th Developer Camp B2 Delphi テクニカルセッション 見た目で楽しい Delphi プログラミング 会社名株式会社シリアルゲームズ 名前細川淳 1

アジェンダ VCL / FireMonkey のスタイルの触りを紹介します VCL スタイル TStyleManager FireMonkey スタイル TStyleBook 2

17 Th Developer Camp 1 VCL スタイル 3

VCL スタイル Delphi XE 以前 TThemeServices OS が提供する テーマ を利用するクラス Windows XP Style (Luna など ) に対応するために追加されました XE2 以降でも依然として利用可能 Delphi XE2 以降 TStyleManager VCL / FireMoneky に新しく追加された スタイル を利用するクラス スタイルを利用すると OS のビジュアル ( 見た目 ) から解放されます 特にマルチプラットフォームである FireMonkey において重要 4

VCL スタイルの一番簡単な使い方 好きなスタイルにチェックを入れる スタイルを 1 個でも追加すると 120[KB] 程ファイルサイズが増加し スタイル一個につきファイルサイズが 40~60[KB] 増加する デフォルトのスタイルを選ぶ たったこれだけ! 5

17 Th Developer Camp VCL スタイルを 適用する デモンストレーション 6

17 Th Developer Camp 1 VCL スタイルを プログラムから使う 7

VCL スタイル - TStyleManager TStyleManager.TrySetStyle スタイルを設定するメソッド とりあえずこのメソッドさえ知っていればスタイルの適用は可能 procedure TForm1.Button1Click(Sender: TObject); begin TStyleManager.TrySetStyle('Amakrits'); // スタイルの名前 end; 8

VCL スタイル - TStyleManager TStyleManager.StyleNames 使用可能なスタイルを返すメソッド procedure TForm1.Button2Click(Sender: TObject); var StyleName: String; begin for StyleName in TStyleManager.StyleNames do ListBox1.Items.Add(StyleName); end; 名前をリストアップして それを適用します procedure TForm1.Button3Click(Sender: TObject); begin // SetStyle は内部で TrySetStyle を呼び出し 失敗すると例外をあげる if (ListBox1.ItemIndex > -1) then TStyleManager.SetStyle(ListBox1.Items[ListBox1.ItemIndex]); end; 9

17 Th Developer Camp VCL スタイルをプログラムから適用するデモンストレーション 10

17 Th Developer Camp 1 VCL スタイルを自分で 作ってみる 11

VCL スタイル - VCL スタイルデザイナ 自分でスタイルを作成する場合 VCL スタイルデザイナを使います 12

VCL スタイル - VCL スタイルデザイナ スタイルは基本的に各部分部分を表す画像で提供されます ゲームのように一枚の画像からパーツを切り出して使います 設定項目が多い! 自分のスタイルをゼロから作ろうと思っても挫折します 既存のスタイルを修正していくと良いでしょう 13

VCL スタイル - VCL スタイルデザイナ 一枚の画像に全ての構成要素をいれます 選択部分が反映されています 14

VCL スタイル - VCL スタイルデザイナ スタイルデザイナ上で確認できます 15

17 Th Developer Camp VCL スタイル スタイルデザイナの デモ 16

VCL スタイル - 自作スタイルの使い方 まず Object のトップのプロパティを設定しておきます Name プロパティがスタイルの名前になります 17

VCL スタイル - 自作スタイルの使い方 TStyleManager.LoadFromFile スタイルファイルを読み込むメソッド procedure TForm1.Button2Click(Sender: TObject); begin TStyleManager.LoadFromFile('C: Temp TestStyle.vsf'); TStyleManager.TrySetStyle('TestStyle'); // スタイルデザイナで設定した名前 end; 18

VCL スタイル - 自作スタイルの使い方 TStyleManager.IsValidStyle スタイルファイルの正当性チェック & スタイル情報取得 procedure TForm1.Button2Click(Sender: TObject); var StyleInfo: TStyleInfo; begin if (TStyleManager.IsValidStyle('C: Temp TestStyle.vsf', StyleInfo)) then with StyleInfo do 実行結果 ShowMessage( Name + slinebreak + Author + slinebreak + AuthorEMail + slinebreak + AuthorURL + slinebreak + Version ); end; 19

17 Th Developer Camp VCL スタイルスタイルファイル読み込みデモ 20

17 Th Developer Camp 1 VCL スタイルを使用する コントロールの作成 21

VCL スタイル - コントロールの作成 一番単純な方法は Paint メソッドや WM_NCPAINT, WM_PAINT に応えて自分で実装します procedure TForm1.PaintBox1Paint(Sender: TObject); var DC: HDC; R: TRect; begin DC := PaintBox1.Canvas.Handle; R := PaintBox1.ClientRect; ノーマル状態のボタンを描画する例 StyleServices.DrawElement( DC, StyleServices.GetElementDetails(tbPushButtonNormal), R); StyleServices.DrawText( DC, StyleServices.GetElementDetails(tbPushButtonNormal), 'TEST CAPTION', R, TTextFormatFlags(DT_CENTER or DT_VCENTER or DT_SINGLELINE), StyleServices.GetStyleFontColor(sfButtonTextNormal)); end; 22

VCL スタイル - コントロールの作成 一般的に VCL スタイルの描画は TStyleHook を使います TStyleHook とは TStyleManager から呼び出されコントロールの描画を担います WM_PAINT や WM_NCPAINT などを フック して それらの応答をコントロールに変わって実行します ただし OS 標準スタイル時の描画には使われません 標準のスタイル時は 従来と同様に コンポーネントの Paint メソッドなどで処理されます 23

VCL スタイル - TStyleHook の実例 unit utestcontrol; interface uses Winapi.Windows, Vcl.Controls, Vcl.ExtCtrls, Vcl.Graphics, Vcl.Themes; type TTestControl = class(tpanel) private class constructor Create; // クラスコンストラクタは initialization に追加するのと同じ end; implementation type TTestControlStyleHook = class(tstylehook) protected procedure Paint(Canvas: TCanvas); override; public constructor Create(iWinControl: TWinControl); override; end; 24

VCL スタイル - TStyleHook の実例 { TTestControl } class constructor TTestControl.Create; begin // StyleHook とコントロールを結び付けます TCustomStyleEngine.RegisterStyleHook(TTestControl, TTestControlStyleHook); end; { TTestControlStyleHook } constructor TTestControlStyleHook.Create(iWinControl: TWinControl); begin inherited; OverridePaint := True; // Paint メソッドをフックしますよ という意味 end; procedure TTestControlStyleHook.Paint(Canvas: TCanvas); begin // TTestControl の Paint の代わりにこちらが呼ばれる ( ノーマル状態のボタンを描画する例と同様のため中略 ) end; end. 25

VCL スタイル - TStyleHook の実例 Windows 標準時 TTestControl が継承している TPanel の標準の見た目が描画される VCL スタイル適用時 TTestControlStyleHook がスタイルに応じた見た目を描画する 26

17 Th Developer Camp VCL スタイル TStyleHook デモ 27

17 Th Developer Camp 1 FireMonkey スタイル 28

FireMonkey スタイル FireMonkey のスタイルは VCL スタイルとはまったく異なります 個々のコントロールがスタイルを持っている TStyledControl を継承したコントロール 個別に設定できる スタイルは TStyleBook で管理される TStyleBook で定義済みのスタイルリソースを読み込むとスタイルを一括で変更できる 29

FireMonkey スタイル 一番簡単な使用方法は Form に TStyleBook コンポーネントを貼る TStyleBook コンポーネントの Resource プロパティをクリックしてスタイルエディタを開く スタイルエディタから定義済みスタイルを読み込む 適用して終了 を押す 30

FireMonkey スタイル簡単な設定方法 スタイルエディタを開く 定義済みスタイルを開く 31

FireMonkey スタイル - コンポーネント毎 個々のコンポーネントごとに編集する方法は コンポーネントを右クリックして カスタムスタイルの編集 デフォルトスタイルの編集 のどちらかを選ぶ スタイルエディタが開く 適用して終了 を押す 個々のコンポーネントのスタイルを編集すると 自動的に TStyleBook コンポーネントのインスタンスが生成される 32

FireMonkey スタイル - コンポーネント毎 スタイルエディタを開く スタイルの要素のプロパティはオブジェクトインスペクタに表示され編集可能 33

FireMonkey スタイル - コンポーネント毎の例 フォーカス時に使われる TGlowEffect の色を変えてみる GlowEffect の色 GlowEffect が発動するトリガーほかにも IsMouseOver などがある GlowColor を Crimson ($DC143C) に変更 34

FireMonkey スタイル - StyleLookup コンポーネントの StyleLookup プロパティを設定するとデフォルトのスタイルを変更できます StyleLookup プロパティは このコントロールが使うスタイルの名前です このプロパティが設定されると FindStyleResource メソッドによって適切なスタイルが設定されます 35

FireMonkey スタイル - StyleLookup TPanel の StyleLookup を変更して見た目をボタンのようにしてみます 36

17 Th Developer Camp FireMonkey スタイル デモ 37

17 Th Developer Camp 1 FireMonkey スタイル そのほか 38

FireMonkey スタイル スタイルの個々の要素をプログラムから変更することができます ( 本当は ) 現状では小細工しないと変更できません Delphi XE2 Update4 で確認 (QC100275 既に Closed) これについては EDN TeamJapan の高橋さんのブログ記事が詳しいです http://blogs.embarcadero.com/teamj/2011/11/11/2589/ 上記記事より引用 FireMonkey のコンポーネントの FindStyleResource メソッドを呼び出して スタイルにアクセスしようとしますが なぜか nil( 見つからなかったということ ) が返ってきてしまいます この問題 ( 現象 ) は QualityCentral にも報告されたのですが トップレベルのスタイルの場合 親クラスである TStyleControl クラスの protected なメンバである FResourceLink にアクセスする必要がある (As Designed, 仕様 ) という結果になりました 39

17 Th Developer Camp 1 付録 :UI 設計の指針 40

UI 設計の指針 VCL / FireMonkey スタイルを利用することで OS の見た目から解放されます しかし OS の UI から解放されるわけでありません そのため OS で提供されている一般的な操作が犠牲になる場合があります 例として Flash (Air) Unitiy Win / Mac / Linux で動作するが 一般化のためにコンテキストメニューが廃止されている Android / ios などで動作するが 一般化のために 戻るボタン による Activity 遷移がサポートされていない FireMonkey の場合は特に OS の提供する UX の犠牲を最小限にとどめる必要があります VCL は Windows アプリケーションとなりますが 見た目が自由になったからといって 独自すぎる UI を提供すべきではありません 41

UI 設計の指針 - 一般的論としての UI 視線は左から右 上から下に流れる 視線の流れ このコンテキストで一般的な動作は右側にイリーガルな操作は左側に ここには視線が最後にたどり着く左上から見ていって 途中に問題がない事を確認していくので UI の右下に OK や 確認 といったボタンがある 上記原則に反するが Windows は MacOS との類似を避けるために OK ボタンを左にした FireMonkey の場合は MacOS に合わせるか Windows に合わせるかはメインターゲットによる もしくは プログラムで動的に変更する 参考として Android は 2.x までは左側 3.x からは右側に変更されている 42

UI 設計の指針 - 一般的論としての UI 視覚効果は感覚に合わせる グレーアウトされていれば押せない MouseOver で凹むボタンなど言語道断 感覚としてボタンは押されると凹むもの 曖昧なアイコンは使わない グレーアウトされているボタンは押せない マウスオーバーするとグレーが解除されたり ポップアップしたりして押せる事をアピールする変な動作がウェブにあふれていますが 間違い このアイコンをクリックすると起きるアクションは? 音が OFF になる 音が ON になるどっち? 43

UI 設計の指針 - 一般的論としての UI その UI で正しいかどうか考慮する TComboBox と ListBox TLabel と TImage TMainMenu と TPopupMenu etc. 都道府県の選択の場合 どの UI が正解だと思いますか? 44

UI 設計の指針 - その他の事 ターゲット UI はターゲット層で決まる ターゲット層ターゲットデバイスターゲット UI 色覚異常への対応 それぞれが判別可能か? ユーザビリティテスト 独りよがりな UI になっていないか? 45

17 Th Developer Camp 1 質疑応答 46