SlideShare a Scribd company logo
1 of 53
EMBARCADERO TECHNOLOGIES
BUILD ONE UI FOR 4 FORM FACTORS
DAVID INTERSIMONE “DAVID I”
Revolutionary UI Development with FireUI
EMBARCADERO TECHNOLOGIES
About David Intersimone “David I”
• V.P. of Developer Relations & Chief Evangelist
• B.S. Computer Science – Cal Poly SLO
• Email: davidi@embarcadero.com
• Blog: http://embt.co/SipFromTheFirehose
• Twitter: @davidi99
EMBARCADERO TECHNOLOGIES
Agenda
• FireUI Overview
• Part 1 - Behavior Services
• Part 2 - Multi-Device Designer
• Part 3 - TMultiView Component
• Part 4 - Native and Custom Styles & Controls
• Part 5 - Multi-Touch and Multi-Display
• Q&A
EMBARCADERO TECHNOLOGIES
FIREUI OVERVIEW
Revolutionary user interface development for multi-device
EMBARCADERO TECHNOLOGIES
FireUI
• Embarcadero’s collection
of technologies to create
a shared User Interface
across all devices and
form factors
– UI Form Designer
– MultiView Components
– Behavior Services
EMBARCADERO TECHNOLOGIES
Multi-Device Designer
• MasterForm Design
• Create specific views if needed
– MasterForm uses
StreamInheritance to manage
deltas
• One project and one form
across all devices
– Shared UI code and event
handling
EMBARCADERO TECHNOLOGIES
Delta Streams: The Power Behind FireUI
• Based on form inheritance streaming
• Toggle visibility, position, size between views
• Device detection picks the best delta from the
master view
• One form object holds all controls for all views
7
EMBARCADERO TECHNOLOGIES
TMultiView: A Super Component
• It’s a drawer, popup, panel
• A container for other controls
• Presentation abstracted to a
separate object
• Set the presentation or let it be
selected at runtime
8
EMBARCADERO TECHNOLOGIES
Behavior Services
Part 1
9
EMBARCADERO TECHNOLOGIES
Behavior Services - “Every Platform is Different”
• “Behind the scenes”
• API provides platform
appropriate design time and
runtime behavior
• Adds PlatformDefault size,
position and behavior for
some controls.
10
EMBARCADERO TECHNOLOGIES
Platform Default Behaviors
• PlatformDefault Component Size
– New Size property
– PlatformDefault is enabled on new components
– Automatically disables when a component is resized.
• Tab position
– New PlatformDefault setting
– Maps to Bottom for iOS, Top for all others
11
EMBARCADERO TECHNOLOGIES
Behavior Services at Design Time
• Examples:
• TTabControl.TabPosition
• Bottom on iOS, top otherwise
• Font.Size & Font.Family
• Many controls have Size.PlatformDefault = True
• TMultiView mode
12
EMBARCADERO TECHNOLOGIES
Behavior Services at Runtime
• TBehaviorServices class in FMX.BehaviorManager.pas
• IDeviceBehavior defines
• GetDeviceClass: TDeviceInfo.TDeviceClass;
• GetOSPlatform: TOSPlatform; // Windows, OSX, iOS, Android
• GetDisplayMetrics: TDeviceDisplayMetrics;
• IFontBehavior defines
• GetDefaultFontFamily & GetDefaultFontSize
13
OP
EMBARCADERO TECHNOLOGIES
Behavior Services - OS Specific
var
DeviceBehavior: IDeviceBehavior;
begin
if TBehaviorServices.Current.SupportsBehaviorService(
IDeviceBehavior, DeviceBehavior, Self) and
(DeviceBehavior.GetOSPlatform = TOSPlatform.iOS) then
// behavior specific to iOS
end;
14
OP
EMBARCADERO TECHNOLOGIES
Behavior Services - Display Metrics
var
DisplayMetrics: TDeviceDisplayMetrics;
begin // self is a form in this case
DisplayMetrics := DeviceBehavior.GetDisplayMetrics(Self);
if DisplayMetrics.AspectRatio > x then
// AspectRatio specific behavior
end;
15
OP
EMBARCADERO TECHNOLOGIES
Behavior Services - Display Metrics
type
TDeviceDisplayMetrics = record
PhysicalScreenSize: TSize;
LogicalScreenSize: TSize;
AspectRatio: Single;
PixelsPerInch: Integer;
ScreenScale: Single;
FontScale: Single;
end;
16
OP
EMBARCADERO TECHNOLOGIES
Behavior Services at Runtime
• TBehaviorServices class in FMX.BehaviorManager.hpp
• IDeviceBehavior defines
• GetDeviceClass: TDeviceInfo.TDeviceClass;
• GetOSPlatform: TOSPlatform; // Windows, OSX, iOS, Android
• GetDisplayMetrics: TDeviceDisplayMetrics;
• IFontBehavior defines
• GetDefaultFontFamily & GetDefaultFontSize
17
C++
EMBARCADERO TECHNOLOGIES
Behavior Services - OS Specific
_di_IDeviceBehavior DeviceBehavior;
if (TBehaviorServices::Current->SupportsBehaviorService(
__uuidof(IDeviceBehavior), DeviceBehavior, this) &&
(DeviceBehavior->GetOSPlatform() == TOSPlatform::iOS)) {
// iOS specific code
}
18
C++
EMBARCADERO TECHNOLOGIES
Behavior Services - Display Metrics
_di_IDeviceBehavior DeviceBehavior;
if (TBehaviorServices::Current->SupportsBehaviorService(
__uuidof(IDeviceBehavior), DeviceBehavior, this))
{
TDeviceDisplayMetrics DisplayMetrics;
DisplayMetrics = DeviceBehavior->GetDisplayMetrics(this);
if (DisplayMetrics.AspectRatio > x) {
// AspectRatio specific behavior
}
}
19
C++
EMBARCADERO TECHNOLOGIES
Behavior Services - Display Metrics
struct DECLSPEC_DRECORD TDeviceDisplayMetrics {
public:
System::Types::TSize PhysicalScreenSize;
System::Types::TSize LogicalScreenSize;
float AspectRatio;
int PixelsPerInch;
float ScreenScale;
float FontScale;
}
20
C++
EMBARCADERO TECHNOLOGIES
Demonstration
FireUI – Behavior Services
21
EMBARCADERO TECHNOLOGIES
Multi-Device Designer
Part 2
22
EMBARCADERO TECHNOLOGIES
Multi-Device Designer - Introduction
• Create a Master View
• Customize views as
necessary for different
platforms.
• StreamInheritance only
stores difference
between platform views
23
EMBARCADERO TECHNOLOGIES
Multi-Device Designer - Details
• There is only one form class for all platforms
• Based on streaming differences (StreamInheritance)
• One FMX file for master, one FMX file per view
• Compiler will selectively include only current
platform resources
24
EMBARCADERO TECHNOLOGIES
Multi-Device Designer - Custom Views
• Install package with unit that calls TDeviceinfo.AddDevice
defining device at initialization, and
TDeviceinfo.RemoveDevice at finalization.
• This unit is used at runtime to take advantage of custom view.
• Defines device type, physical screen pixels, logical screen size
and aspect ratio.
• Add matching entry to
%AppData%RoamingEmbarcaderoBDS15.0MobileDevic
es.xml
25
EMBARCADERO TECHNOLOGIES
Demonstration
FireUI – Multi-Device Designer
26
EMBARCADERO TECHNOLOGIES
TMultiView Component
Part 3
27
EMBARCADERO TECHNOLOGIES
TMultiView Component
• 4 presentations in one
• A sort of “Super Panel”
• Presentation depends on
device kind and
orientation
• Automatically adapts to
different form factors and
orientations, and platforms.
• Custom presentation
available
28
EMBARCADERO TECHNOLOGIES
TMultiView Parts
29
TMultiView
MasterButton
TargetControl
Not always visible depending on mode,
should not be on TMultiView.
Usually TLayout or TTabControl
containing other controls. This is
the main content area.
Usually contains other
controls. Only
occasionally visible.
(Useful for settings,
menu, navigation, etc.)
EMBARCADERO TECHNOLOGIES
TMultiView Modes
• PlatformDefault
• Popover
• Drawer
• Panel
• Custom
30
Button always visible
Button covered when open
Button always hidden
EMBARCADERO TECHNOLOGIES
TMultiView at Runtime
• Open and close drawer (or equivalent)
• MultiView1.HideMaster / MultiView1.ShowMaster
• For custom view
• Implement TMultiViewPresentation
• Set it for the MultiView1.CustomPresentationClass
• HasPresenter & MultiView1.Presenter.State
• Set of (Installed, Opened, Moving)
31
EMBARCADERO TECHNOLOGIES
Demonstration
FireUI – TMultiView Component
32
EMBARCADERO TECHNOLOGIES
Native and Custom Styles & Controls
Part 4
33
EMBARCADERO TECHNOLOGIES
Native and Custom Styles
34
Native iOS 8 style Custom iOS style
• Built-in Native Styles
for iOS, Android,
Windows and Mac
• Premium custom
themes for all 4
supported platforms
EMBARCADERO TECHNOLOGIES
FireMonkey Style Designer
• Create, edit, and test FireMonkey styles
– Edit Default Style command
– Edit Custom Style command
– Views
• Object Viewer
• Structure View
• Object Inspector
35
http://docwiki.embarcadero.com/RADStudio/XE7/en/FireMonkey_Style_Designer
EMBARCADERO TECHNOLOGIES
Bitmap Style Designer
• Create style files – IDE Tools menu and Bin folder
• You can distribute to graphic designers & customers
• The Bitmap Style Designer enables you to:
– Create, edit, and test FireMonkey styles (.style files)
– Create, edit, and test VCL styles (.vsf files)
– Convert a VCL style (.vsf file) into a FireMonkey style by saving the
VCL style as a FireMonkey style (.style file)
36
EMBARCADERO TECHNOLOGIES
Using a Custom/Premium Style – Android-L
0. Download the Android-L Style Pack
1. Place a TStyleBook onto your Master view
2. Set TStyleBook.Name = "AndroidLStyleBook"
3. Load AndroidLLight.fsf, AndroidLDarkBlue.fsf or AndroidLDark.fsf to AndroidLStyleBook
4. Use the TForm.OnCreate event and add this code:
Object Pascal:
{$IFDEF ANDROID}
if TOSVersion.Major = 5 then
Form1.StyleBook := AndroidLStyleBook;
{$ENDIF}
C++:
#if defined(__ANDROID__)
if (System::Sysutils::TOSVersion::Check(5)) {
Form1->StyleBook = AndroidLStyleBook;
}
#endif
37 http://cc.embarcadero.com/item/30118
EMBARCADERO TECHNOLOGIES
Native iOS Controls
• TEdit family of controls
• Same control, different presentation
• Model/View architecture
• Best of both worlds:
– High performance
– Platform-independent code
38
EMBARCADERO TECHNOLOGIES
Demonstration
FireUI – Native and Custom Styles & Controls
39
EMBARCADERO TECHNOLOGIES
Multi-Touch, Multi-Monitor
Part 5
40
EMBARCADERO TECHNOLOGIES
Multi-Touch
• New FMX.MultiTouch unit: TMultiTouchManager
• Choose ONE of the following to use with FMX
– OnGesture
– OnTap
– OnTouch
• DocWiki
– http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.MultiTouch
– http://docwiki.embarcadero.com/RADStudio/XE7/en/Gestures_in_FireM
onkey
EMBARCADERO TECHNOLOGIES
Multi-Touch – OnTap, OnTouch
• OnTap
– Single tap on a UI component
– C++: FormTap(TObject *Sender, const TPointF &Point)
– OP: FormTap(Sender: TObject; const Point: TPointF)
• OnTouch
– Multi-Touch gestures that are truly gestures
• TTouchAction
• Down - Occurs when a finger or other touch device touches the screen
• Up - Occurs when a finger or other touch device is removed or lifted from the screen
• Move - Occurs when a finger or other touch device moves but is not performing a Down or an Up action
• None - A default value; should never occur in reality.
• Cancel - Cancels the gesture.
– C++: FormTouch(TObject *Sender, const TTouches Touches, const TTouchAction Action
• if (Action == TTouchAction::Down)
• Touches[i].Location.X
• Touches[i].Location.Y
– OP: FormTouch(Sender: TObject; const Touches: TTouches; const Action: TTouchAction)
• if Action=TTouchAction.Down then
• Touches[i].Location.X
• Touches[i].Location.Y
EMBARCADERO TECHNOLOGIES
Multi-Touch - OnGesture
• Standard Gestures:
– The standard gestures (Up, Down, Triangle, and so on) are equivalent to Application Gestures
on Windows, and to Multi-Touch Sequences on Mac OS X and iOS. Standard gestures are made
with one finger on Windows, and with two fingers on Mac OS X.
– After the gesture finishes (the user lifts the finger), the OnGesture event is fired (if a standard
gesture was recognized).
• Interactive Gestures:
– The interactive gestures are multi-touch gestures (Zoom, Rotate, and so on) that are
equivalent to System Gestures on Windows, and to Gestures on Mac OS X, iOS, and Android.
Every time the fingers move on the touch surface, an OnGesture event is fired.
– FireMonkey uses the four standard gestures Up, Down, Left, and Right as equivalent to the
interactive Swipe gesture (on Mac OS X, iOS, Android, and Windows 8).
43
EMBARCADERO TECHNOLOGIES
Multi-Monitor
• FMX and VCL
• VCL - TScreen
– Screen.MonitorCount
– Screen.Monitors[I].MonitorNum
– Screen.Monitors[I].Top
– Screen.Monitors[I].Left
– Screen.Monitors[I].Width
– Screen.Monitors[I].Height
• FMX – TScreen
– Screen.DisplayCount
– Screen.Displays[I].Index
– Screen.Displays[I].Bounds.Top
– Screen.Displays[I].Bounds.Left
– Screen.Displays[I].Bounds.Width
– Screen.Displays[I].Bounds.Height
– Screen.Displays[I].Primary
44
EMBARCADERO TECHNOLOGIES
Demonstration
FireUI – Multi-Touch, Multi-Monitor
45
EMBARCADERO TECHNOLOGIES
Summary
• FireUI allows you to build one UI for all form factors
and platforms
• The multi-device designer allows you to create
custom and unique UI and user experience
• TMultiView component adapts to each device form
factor and orientation
46
EMBARCADERO TECHNOLOGIES
More Information
• Form Designer
– http://docwiki.embarcadero.com/RADStudio/XE7/en/Form_Designer
– http://docwiki.embarcadero.com/RADStudio/XE7/en/Using_FireMonkey_Views
– http://docwiki.embarcadero.com/RADStudio/XE7/en/Adding_Views_to_Your_Multi-
Device_Project
– http://docwiki.embarcadero.com/RADStudio/XE7/en/Adding_a_Customized_View_to_the_Vi
ew_Selector
– http://docwiki.embarcadero.com/RADStudio/XE7/en/Mobile_Tutorial:_Using_Tab_Componen
ts_to_Display_Pages_(iOS_and_Android)
• FireMonkey Styles
– http://docwiki.embarcadero.com/RADStudio/XE7/en/FireMonkey_Style_Designer
– http://docwiki.embarcadero.com/RADStudio/XE7/en/Bitmap_Style_Designer
• TMultiView Component
– http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.MultiView.TMultiView
– http://docwiki.embarcadero.com/RADStudio/XE7/en/Mobile_Tutorial:_Using_a_MultiView_C
omponent_to_Display_Alternate_Views_of_Information_(iOS_and_Android)
47
EMBARCADERO TECHNOLOGIES
More Information
• Multi-Touch
– http://docwiki.embarcadero.com/RADStudio/XE7/en/Gestures_in_FireM
onkey
– http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.MultiTouch
– http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.Forms.TCommo
nCustomForm.OnTouch
– http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.Forms.TCommo
nCustomForm.OnTap
• Multi-Monitor
– http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.Forms.TScreen.
Displays
48
EMBARCADERO TECHNOLOGIES
More Information
• CodeRage 9 sessions for FireUI
– Object Pascal
• FireUI and the Multi-Device Designer - https://www.youtube.com/watch?v=cj_geQ3Vz9E
• Designing Multi-Device Applications with FireUI and TMultiView -
https://www.youtube.com/watch?v=Qkf3n8Cw7_E
• What's New in FireMonkey - https://www.youtube.com/watch?v=PScvVpEO-Rs
• Touch Management with Object Pascal on all Platforms -
https://www.youtube.com/watch?v=lRYT3ToaMK8
– C++
• FireUI and the Multi-Device Designer - https://www.youtube.com/watch?v=zuE1ufYksAg
• Designing Multi-Device Applications with FireUI and TMultiView -
https://www.youtube.com/watch?v=i3M5T0oWmFU
• What's New in FireMonkey - https://www.youtube.com/watch?v=yjm0PxoxHnI
49
EMBARCADERO TECHNOLOGIES
More Information
• Developer Skill Sprints
– Landing Page - http://www.embarcadero.com/landing-
pages/skill-sprints
– YouTube playlist -
https://www.youtube.com/playlist?list=PLwUPJvR9mZHhZ
TajVWsgaFPLtDA-t1Xwc
50
EMBARCADERO TECHNOLOGIES
Special offers and bonuses
• Enterprise purchases or upgrade from Pro to Enterprise
– Receive a 10-user deployment license for Enterprise Mobility Services
– January 21 to March 31, 2015
• XE2 and earlier versions registered users
– Upgrade from any previous version
– Get the upgrade price on RAD Studio XE7, Delphi XE7 or C++Builder XE7 when you purchase
the upgrade with 1 year Support and Maintenance
– January 12 to March 31, 2015
• Get Free Bonuses until March 31, 2015
– New Object Pascal Handbook by Marco Cantu
– Castalia for Delphi 2014.11
– VCL and FireMonkey Premium Styles
– Mida Converter Basic
51
Find all the details at http://www.embarcadero.com/radoffer
EMBARCADERO TECHNOLOGIES
Q&A
52
EMBARCADERO TECHNOLOGIES
THANK YOU 
EMAIL: DAVIDI@EMBARCADERO.COM
BLOG: HTTP://EMBT.CO/SIPFROMTHEFIREHOSE
TWITTER: @DAVIDI99
53

More Related Content

Viewers also liked

My last vacation.
My last vacation.My last vacation.
My last vacation.jeandrea
 
Muslims wake up and educate yourself
Muslims wake up and educate yourselfMuslims wake up and educate yourself
Muslims wake up and educate yourselfAnjum Badar
 
Discipline in school short pt show 1
Discipline in school short pt show 1Discipline in school short pt show 1
Discipline in school short pt show 1Carolineburdick
 
Ζωγραφίζοντας την Ελλάδα
Ζωγραφίζοντας την ΕλλάδαΖωγραφίζοντας την Ελλάδα
Ζωγραφίζοντας την ΕλλάδαMarilia
 
Όταν κοιτάς από ψηλά
Όταν κοιτάς από ψηλάΌταν κοιτάς από ψηλά
Όταν κοιτάς από ψηλάMarilia
 
Особенности охраны и защиты прав интеллектуальной собственности в фармацевтич...
Особенности охраны и защиты прав интеллектуальной собственности в фармацевтич...Особенности охраны и защиты прав интеллектуальной собственности в фармацевтич...
Особенности охраны и защиты прав интеллектуальной собственности в фармацевтич...Constantine Zerov
 
Is it Working? Discipline in Schools
Is it Working?  Discipline in SchoolsIs it Working?  Discipline in Schools
Is it Working? Discipline in SchoolsCarolineburdick
 
RAD Studio XE7 Tour Live Online - Move your VCL Into the Future
RAD Studio XE7 Tour Live Online - Move your VCL Into the FutureRAD Studio XE7 Tour Live Online - Move your VCL Into the Future
RAD Studio XE7 Tour Live Online - Move your VCL Into the FutureDavid Intersimone
 
Передача технологій та ліцензування (Падучак Богдан Михайлович )
Передача технологій та ліцензування (Падучак Богдан Михайлович )Передача технологій та ліцензування (Падучак Богдан Михайлович )
Передача технологій та ліцензування (Падучак Богдан Михайлович )Constantine Zerov
 
το τζίνι στο μπουκάλι
το τζίνι στο μπουκάλιτο τζίνι στο μπουκάλι
το τζίνι στο μπουκάλιMarilia
 
Pedacit ode amigo_audio_
Pedacit ode amigo_audio_Pedacit ode amigo_audio_
Pedacit ode amigo_audio_Belen Jimenez
 
For the Love of numbers
For the Love of numbersFor the Love of numbers
For the Love of numbersNickellj1
 
1 minute powerpoint- Caroline Burdick on Behavior Modification
1 minute powerpoint- Caroline Burdick on Behavior Modification1 minute powerpoint- Caroline Burdick on Behavior Modification
1 minute powerpoint- Caroline Burdick on Behavior ModificationCarolineburdick
 
Lets talk about bullying
Lets talk about bullying Lets talk about bullying
Lets talk about bullying misshenderson
 
Αποκριάτικες εκδηλώσεις
Αποκριάτικες εκδηλώσειςΑποκριάτικες εκδηλώσεις
Αποκριάτικες εκδηλώσειςMarilia
 
Intellectual property in social media and online resources. Dmytro Gadomsky
Intellectual property in social media and online resources. Dmytro GadomskyIntellectual property in social media and online resources. Dmytro Gadomsky
Intellectual property in social media and online resources. Dmytro GadomskyConstantine Zerov
 
Σακίδια πλάτης για τους πρόσφυγες
Σακίδια πλάτης για τους πρόσφυγεςΣακίδια πλάτης για τους πρόσφυγες
Σακίδια πλάτης για τους πρόσφυγεςMarilia
 

Viewers also liked (20)

My last vacation.
My last vacation.My last vacation.
My last vacation.
 
Muslims wake up and educate yourself
Muslims wake up and educate yourselfMuslims wake up and educate yourself
Muslims wake up and educate yourself
 
Discipline in school short pt show 1
Discipline in school short pt show 1Discipline in school short pt show 1
Discipline in school short pt show 1
 
Ζωγραφίζοντας την Ελλάδα
Ζωγραφίζοντας την ΕλλάδαΖωγραφίζοντας την Ελλάδα
Ζωγραφίζοντας την Ελλάδα
 
Diwali slogan
Diwali sloganDiwali slogan
Diwali slogan
 
Όταν κοιτάς από ψηλά
Όταν κοιτάς από ψηλάΌταν κοιτάς από ψηλά
Όταν κοιτάς από ψηλά
 
Особенности охраны и защиты прав интеллектуальной собственности в фармацевтич...
Особенности охраны и защиты прав интеллектуальной собственности в фармацевтич...Особенности охраны и защиты прав интеллектуальной собственности в фармацевтич...
Особенности охраны и защиты прав интеллектуальной собственности в фармацевтич...
 
Is it Working? Discipline in Schools
Is it Working?  Discipline in SchoolsIs it Working?  Discipline in Schools
Is it Working? Discipline in Schools
 
RAD Studio XE7 Tour Live Online - Move your VCL Into the Future
RAD Studio XE7 Tour Live Online - Move your VCL Into the FutureRAD Studio XE7 Tour Live Online - Move your VCL Into the Future
RAD Studio XE7 Tour Live Online - Move your VCL Into the Future
 
Передача технологій та ліцензування (Падучак Богдан Михайлович )
Передача технологій та ліцензування (Падучак Богдан Михайлович )Передача технологій та ліцензування (Падучак Богдан Михайлович )
Передача технологій та ліцензування (Падучак Богдан Михайлович )
 
το τζίνι στο μπουκάλι
το τζίνι στο μπουκάλιτο τζίνι στο μπουκάλι
το τζίνι στο μπουκάλι
 
Pedacit ode amigo_audio_
Pedacit ode amigo_audio_Pedacit ode amigo_audio_
Pedacit ode amigo_audio_
 
For the Love of numbers
For the Love of numbersFor the Love of numbers
For the Love of numbers
 
Quis c++ - TOKO OTAKU
Quis c++ - TOKO OTAKUQuis c++ - TOKO OTAKU
Quis c++ - TOKO OTAKU
 
1 minute powerpoint- Caroline Burdick on Behavior Modification
1 minute powerpoint- Caroline Burdick on Behavior Modification1 minute powerpoint- Caroline Burdick on Behavior Modification
1 minute powerpoint- Caroline Burdick on Behavior Modification
 
Copyright & Cyberporn
Copyright & Cyberporn Copyright & Cyberporn
Copyright & Cyberporn
 
Lets talk about bullying
Lets talk about bullying Lets talk about bullying
Lets talk about bullying
 
Αποκριάτικες εκδηλώσεις
Αποκριάτικες εκδηλώσειςΑποκριάτικες εκδηλώσεις
Αποκριάτικες εκδηλώσεις
 
Intellectual property in social media and online resources. Dmytro Gadomsky
Intellectual property in social media and online resources. Dmytro GadomskyIntellectual property in social media and online resources. Dmytro Gadomsky
Intellectual property in social media and online resources. Dmytro Gadomsky
 
Σακίδια πλάτης για τους πρόσφυγες
Σακίδια πλάτης για τους πρόσφυγεςΣακίδια πλάτης για τους πρόσφυγες
Σακίδια πλάτης για τους πρόσφυγες
 

Similar to Build One UI for 4 Form Factors with FireUI

20140424 developer direct live 2014 jim mc_keeth_what's new in xe6
20140424 developer direct live 2014 jim mc_keeth_what's new in xe620140424 developer direct live 2014 jim mc_keeth_what's new in xe6
20140424 developer direct live 2014 jim mc_keeth_what's new in xe6Devgear
 
(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern DesktopOren Novotny
 
Innovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkInnovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkSandeep Adwankar
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformAndrew Ferrier
 
RAD Studio XE5 in Action Tech Preview
RAD Studio XE5 in Action Tech PreviewRAD Studio XE5 in Action Tech Preview
RAD Studio XE5 in Action Tech PreviewSoftline
 
Import Tools for InduSoft Web Studio - PanelMate, PanelView, and FactoryTalk
Import Tools for InduSoft Web Studio - PanelMate, PanelView, and FactoryTalkImport Tools for InduSoft Web Studio - PanelMate, PanelView, and FactoryTalk
Import Tools for InduSoft Web Studio - PanelMate, PanelView, and FactoryTalkAVEVA
 
Xamarin.Mac Introduction
Xamarin.Mac IntroductionXamarin.Mac Introduction
Xamarin.Mac IntroductionMiguel de Icaza
 
Modeveast Appcelerator Presentation
Modeveast Appcelerator PresentationModeveast Appcelerator Presentation
Modeveast Appcelerator PresentationAaron Saunders
 
Cerebro for vfx eng
Cerebro for vfx engCerebro for vfx eng
Cerebro for vfx engCineSoft
 
Containers: DevOp Enablers of Technical Solutions
Containers: DevOp Enablers of Technical SolutionsContainers: DevOp Enablers of Technical Solutions
Containers: DevOp Enablers of Technical SolutionsJules Pierre-Louis
 
Field enablement roadshow - Real World Solutions - John Pelak
Field enablement roadshow - Real World Solutions - John PelakField enablement roadshow - Real World Solutions - John Pelak
Field enablement roadshow - Real World Solutions - John PelakBlueMetalInc
 
Easily add windows 10 look feel and new components to existing vcl apps
Easily add windows 10 look feel and new components to existing vcl appsEasily add windows 10 look feel and new components to existing vcl apps
Easily add windows 10 look feel and new components to existing vcl appsDavid Intersimone
 
Wintellect - Devscovery - Portable Class Library
Wintellect - Devscovery - Portable Class LibraryWintellect - Devscovery - Portable Class Library
Wintellect - Devscovery - Portable Class LibraryJeremy Likness
 
Behavioral driven development with Behat
Behavioral driven development with BehatBehavioral driven development with Behat
Behavioral driven development with BehatPromet Source
 
The XPages Mobile Controls: What's New in Notes 9.0.1
The XPages Mobile Controls: What's New in Notes 9.0.1The XPages Mobile Controls: What's New in Notes 9.0.1
The XPages Mobile Controls: What's New in Notes 9.0.1Teamstudio
 
BlackBerry Basic
BlackBerry BasicBlackBerry Basic
BlackBerry BasicDuy Do Phan
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Getting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App TestingGetting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App TestingBitbar
 

Similar to Build One UI for 4 Form Factors with FireUI (20)

Marco cantu keynote
Marco cantu keynoteMarco cantu keynote
Marco cantu keynote
 
20140424 developer direct live 2014 jim mc_keeth_what's new in xe6
20140424 developer direct live 2014 jim mc_keeth_what's new in xe620140424 developer direct live 2014 jim mc_keeth_what's new in xe6
20140424 developer direct live 2014 jim mc_keeth_what's new in xe6
 
(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop(WPF + WinForms) * .NET Core = Modern Desktop
(WPF + WinForms) * .NET Core = Modern Desktop
 
Innovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and FrameworkInnovations in Sencha Tooling and Framework
Innovations in Sencha Tooling and Framework
 
Building Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst PlatformBuilding Effective and Rapid Applications with IBM MobileFirst Platform
Building Effective and Rapid Applications with IBM MobileFirst Platform
 
RAD Studio XE5 in Action Tech Preview
RAD Studio XE5 in Action Tech PreviewRAD Studio XE5 in Action Tech Preview
RAD Studio XE5 in Action Tech Preview
 
Import Tools for InduSoft Web Studio - PanelMate, PanelView, and FactoryTalk
Import Tools for InduSoft Web Studio - PanelMate, PanelView, and FactoryTalkImport Tools for InduSoft Web Studio - PanelMate, PanelView, and FactoryTalk
Import Tools for InduSoft Web Studio - PanelMate, PanelView, and FactoryTalk
 
Xamarin.Mac Introduction
Xamarin.Mac IntroductionXamarin.Mac Introduction
Xamarin.Mac Introduction
 
Modeveast Appcelerator Presentation
Modeveast Appcelerator PresentationModeveast Appcelerator Presentation
Modeveast Appcelerator Presentation
 
Cerebro for vfx eng
Cerebro for vfx engCerebro for vfx eng
Cerebro for vfx eng
 
Containers: DevOp Enablers of Technical Solutions
Containers: DevOp Enablers of Technical SolutionsContainers: DevOp Enablers of Technical Solutions
Containers: DevOp Enablers of Technical Solutions
 
Field enablement roadshow - Real World Solutions - John Pelak
Field enablement roadshow - Real World Solutions - John PelakField enablement roadshow - Real World Solutions - John Pelak
Field enablement roadshow - Real World Solutions - John Pelak
 
Easily add windows 10 look feel and new components to existing vcl apps
Easily add windows 10 look feel and new components to existing vcl appsEasily add windows 10 look feel and new components to existing vcl apps
Easily add windows 10 look feel and new components to existing vcl apps
 
Wintellect - Devscovery - Portable Class Library
Wintellect - Devscovery - Portable Class LibraryWintellect - Devscovery - Portable Class Library
Wintellect - Devscovery - Portable Class Library
 
RAD studio XE7 first look webinar
RAD studio XE7 first look webinarRAD studio XE7 first look webinar
RAD studio XE7 first look webinar
 
Behavioral driven development with Behat
Behavioral driven development with BehatBehavioral driven development with Behat
Behavioral driven development with Behat
 
The XPages Mobile Controls: What's New in Notes 9.0.1
The XPages Mobile Controls: What's New in Notes 9.0.1The XPages Mobile Controls: What's New in Notes 9.0.1
The XPages Mobile Controls: What's New in Notes 9.0.1
 
BlackBerry Basic
BlackBerry BasicBlackBerry Basic
BlackBerry Basic
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Getting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App TestingGetting Started with XCTest and XCUITest for iOS App Testing
Getting Started with XCTest and XCUITest for iOS App Testing
 

Recently uploaded

Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based projectAnoyGreter
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfStefano Stabellini
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZABSYZ Inc
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...confluent
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesŁukasz Chruściel
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfMarharyta Nedzelska
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)jennyeacort
 

Recently uploaded (20)

Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
MYjobs Presentation Django-based project
MYjobs Presentation Django-based projectMYjobs Presentation Django-based project
MYjobs Presentation Django-based project
 
Xen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdfXen Safety Embedded OSS Summit April 2024 v4.pdf
Xen Safety Embedded OSS Summit April 2024 v4.pdf
 
Salesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZSalesforce Implementation Services PPT By ABSYZ
Salesforce Implementation Services PPT By ABSYZ
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
Catch the Wave: SAP Event-Driven and Data Streaming for the Intelligence Ente...
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Unveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New FeaturesUnveiling the Future: Sylius 2.0 New Features
Unveiling the Future: Sylius 2.0 New Features
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
A healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdfA healthy diet for your Java application Devoxx France.pdf
A healthy diet for your Java application Devoxx France.pdf
 
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
Call Us🔝>༒+91-9711147426⇛Call In girls karol bagh (Delhi)
 

Build One UI for 4 Form Factors with FireUI

  • 1. EMBARCADERO TECHNOLOGIES BUILD ONE UI FOR 4 FORM FACTORS DAVID INTERSIMONE “DAVID I” Revolutionary UI Development with FireUI
  • 2. EMBARCADERO TECHNOLOGIES About David Intersimone “David I” • V.P. of Developer Relations & Chief Evangelist • B.S. Computer Science – Cal Poly SLO • Email: davidi@embarcadero.com • Blog: http://embt.co/SipFromTheFirehose • Twitter: @davidi99
  • 3. EMBARCADERO TECHNOLOGIES Agenda • FireUI Overview • Part 1 - Behavior Services • Part 2 - Multi-Device Designer • Part 3 - TMultiView Component • Part 4 - Native and Custom Styles & Controls • Part 5 - Multi-Touch and Multi-Display • Q&A
  • 4. EMBARCADERO TECHNOLOGIES FIREUI OVERVIEW Revolutionary user interface development for multi-device
  • 5. EMBARCADERO TECHNOLOGIES FireUI • Embarcadero’s collection of technologies to create a shared User Interface across all devices and form factors – UI Form Designer – MultiView Components – Behavior Services
  • 6. EMBARCADERO TECHNOLOGIES Multi-Device Designer • MasterForm Design • Create specific views if needed – MasterForm uses StreamInheritance to manage deltas • One project and one form across all devices – Shared UI code and event handling
  • 7. EMBARCADERO TECHNOLOGIES Delta Streams: The Power Behind FireUI • Based on form inheritance streaming • Toggle visibility, position, size between views • Device detection picks the best delta from the master view • One form object holds all controls for all views 7
  • 8. EMBARCADERO TECHNOLOGIES TMultiView: A Super Component • It’s a drawer, popup, panel • A container for other controls • Presentation abstracted to a separate object • Set the presentation or let it be selected at runtime 8
  • 10. EMBARCADERO TECHNOLOGIES Behavior Services - “Every Platform is Different” • “Behind the scenes” • API provides platform appropriate design time and runtime behavior • Adds PlatformDefault size, position and behavior for some controls. 10
  • 11. EMBARCADERO TECHNOLOGIES Platform Default Behaviors • PlatformDefault Component Size – New Size property – PlatformDefault is enabled on new components – Automatically disables when a component is resized. • Tab position – New PlatformDefault setting – Maps to Bottom for iOS, Top for all others 11
  • 12. EMBARCADERO TECHNOLOGIES Behavior Services at Design Time • Examples: • TTabControl.TabPosition • Bottom on iOS, top otherwise • Font.Size & Font.Family • Many controls have Size.PlatformDefault = True • TMultiView mode 12
  • 13. EMBARCADERO TECHNOLOGIES Behavior Services at Runtime • TBehaviorServices class in FMX.BehaviorManager.pas • IDeviceBehavior defines • GetDeviceClass: TDeviceInfo.TDeviceClass; • GetOSPlatform: TOSPlatform; // Windows, OSX, iOS, Android • GetDisplayMetrics: TDeviceDisplayMetrics; • IFontBehavior defines • GetDefaultFontFamily & GetDefaultFontSize 13 OP
  • 14. EMBARCADERO TECHNOLOGIES Behavior Services - OS Specific var DeviceBehavior: IDeviceBehavior; begin if TBehaviorServices.Current.SupportsBehaviorService( IDeviceBehavior, DeviceBehavior, Self) and (DeviceBehavior.GetOSPlatform = TOSPlatform.iOS) then // behavior specific to iOS end; 14 OP
  • 15. EMBARCADERO TECHNOLOGIES Behavior Services - Display Metrics var DisplayMetrics: TDeviceDisplayMetrics; begin // self is a form in this case DisplayMetrics := DeviceBehavior.GetDisplayMetrics(Self); if DisplayMetrics.AspectRatio > x then // AspectRatio specific behavior end; 15 OP
  • 16. EMBARCADERO TECHNOLOGIES Behavior Services - Display Metrics type TDeviceDisplayMetrics = record PhysicalScreenSize: TSize; LogicalScreenSize: TSize; AspectRatio: Single; PixelsPerInch: Integer; ScreenScale: Single; FontScale: Single; end; 16 OP
  • 17. EMBARCADERO TECHNOLOGIES Behavior Services at Runtime • TBehaviorServices class in FMX.BehaviorManager.hpp • IDeviceBehavior defines • GetDeviceClass: TDeviceInfo.TDeviceClass; • GetOSPlatform: TOSPlatform; // Windows, OSX, iOS, Android • GetDisplayMetrics: TDeviceDisplayMetrics; • IFontBehavior defines • GetDefaultFontFamily & GetDefaultFontSize 17 C++
  • 18. EMBARCADERO TECHNOLOGIES Behavior Services - OS Specific _di_IDeviceBehavior DeviceBehavior; if (TBehaviorServices::Current->SupportsBehaviorService( __uuidof(IDeviceBehavior), DeviceBehavior, this) && (DeviceBehavior->GetOSPlatform() == TOSPlatform::iOS)) { // iOS specific code } 18 C++
  • 19. EMBARCADERO TECHNOLOGIES Behavior Services - Display Metrics _di_IDeviceBehavior DeviceBehavior; if (TBehaviorServices::Current->SupportsBehaviorService( __uuidof(IDeviceBehavior), DeviceBehavior, this)) { TDeviceDisplayMetrics DisplayMetrics; DisplayMetrics = DeviceBehavior->GetDisplayMetrics(this); if (DisplayMetrics.AspectRatio > x) { // AspectRatio specific behavior } } 19 C++
  • 20. EMBARCADERO TECHNOLOGIES Behavior Services - Display Metrics struct DECLSPEC_DRECORD TDeviceDisplayMetrics { public: System::Types::TSize PhysicalScreenSize; System::Types::TSize LogicalScreenSize; float AspectRatio; int PixelsPerInch; float ScreenScale; float FontScale; } 20 C++
  • 23. EMBARCADERO TECHNOLOGIES Multi-Device Designer - Introduction • Create a Master View • Customize views as necessary for different platforms. • StreamInheritance only stores difference between platform views 23
  • 24. EMBARCADERO TECHNOLOGIES Multi-Device Designer - Details • There is only one form class for all platforms • Based on streaming differences (StreamInheritance) • One FMX file for master, one FMX file per view • Compiler will selectively include only current platform resources 24
  • 25. EMBARCADERO TECHNOLOGIES Multi-Device Designer - Custom Views • Install package with unit that calls TDeviceinfo.AddDevice defining device at initialization, and TDeviceinfo.RemoveDevice at finalization. • This unit is used at runtime to take advantage of custom view. • Defines device type, physical screen pixels, logical screen size and aspect ratio. • Add matching entry to %AppData%RoamingEmbarcaderoBDS15.0MobileDevic es.xml 25
  • 28. EMBARCADERO TECHNOLOGIES TMultiView Component • 4 presentations in one • A sort of “Super Panel” • Presentation depends on device kind and orientation • Automatically adapts to different form factors and orientations, and platforms. • Custom presentation available 28
  • 29. EMBARCADERO TECHNOLOGIES TMultiView Parts 29 TMultiView MasterButton TargetControl Not always visible depending on mode, should not be on TMultiView. Usually TLayout or TTabControl containing other controls. This is the main content area. Usually contains other controls. Only occasionally visible. (Useful for settings, menu, navigation, etc.)
  • 30. EMBARCADERO TECHNOLOGIES TMultiView Modes • PlatformDefault • Popover • Drawer • Panel • Custom 30 Button always visible Button covered when open Button always hidden
  • 31. EMBARCADERO TECHNOLOGIES TMultiView at Runtime • Open and close drawer (or equivalent) • MultiView1.HideMaster / MultiView1.ShowMaster • For custom view • Implement TMultiViewPresentation • Set it for the MultiView1.CustomPresentationClass • HasPresenter & MultiView1.Presenter.State • Set of (Installed, Opened, Moving) 31
  • 33. EMBARCADERO TECHNOLOGIES Native and Custom Styles & Controls Part 4 33
  • 34. EMBARCADERO TECHNOLOGIES Native and Custom Styles 34 Native iOS 8 style Custom iOS style • Built-in Native Styles for iOS, Android, Windows and Mac • Premium custom themes for all 4 supported platforms
  • 35. EMBARCADERO TECHNOLOGIES FireMonkey Style Designer • Create, edit, and test FireMonkey styles – Edit Default Style command – Edit Custom Style command – Views • Object Viewer • Structure View • Object Inspector 35 http://docwiki.embarcadero.com/RADStudio/XE7/en/FireMonkey_Style_Designer
  • 36. EMBARCADERO TECHNOLOGIES Bitmap Style Designer • Create style files – IDE Tools menu and Bin folder • You can distribute to graphic designers & customers • The Bitmap Style Designer enables you to: – Create, edit, and test FireMonkey styles (.style files) – Create, edit, and test VCL styles (.vsf files) – Convert a VCL style (.vsf file) into a FireMonkey style by saving the VCL style as a FireMonkey style (.style file) 36
  • 37. EMBARCADERO TECHNOLOGIES Using a Custom/Premium Style – Android-L 0. Download the Android-L Style Pack 1. Place a TStyleBook onto your Master view 2. Set TStyleBook.Name = "AndroidLStyleBook" 3. Load AndroidLLight.fsf, AndroidLDarkBlue.fsf or AndroidLDark.fsf to AndroidLStyleBook 4. Use the TForm.OnCreate event and add this code: Object Pascal: {$IFDEF ANDROID} if TOSVersion.Major = 5 then Form1.StyleBook := AndroidLStyleBook; {$ENDIF} C++: #if defined(__ANDROID__) if (System::Sysutils::TOSVersion::Check(5)) { Form1->StyleBook = AndroidLStyleBook; } #endif 37 http://cc.embarcadero.com/item/30118
  • 38. EMBARCADERO TECHNOLOGIES Native iOS Controls • TEdit family of controls • Same control, different presentation • Model/View architecture • Best of both worlds: – High performance – Platform-independent code 38
  • 39. EMBARCADERO TECHNOLOGIES Demonstration FireUI – Native and Custom Styles & Controls 39
  • 41. EMBARCADERO TECHNOLOGIES Multi-Touch • New FMX.MultiTouch unit: TMultiTouchManager • Choose ONE of the following to use with FMX – OnGesture – OnTap – OnTouch • DocWiki – http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.MultiTouch – http://docwiki.embarcadero.com/RADStudio/XE7/en/Gestures_in_FireM onkey
  • 42. EMBARCADERO TECHNOLOGIES Multi-Touch – OnTap, OnTouch • OnTap – Single tap on a UI component – C++: FormTap(TObject *Sender, const TPointF &Point) – OP: FormTap(Sender: TObject; const Point: TPointF) • OnTouch – Multi-Touch gestures that are truly gestures • TTouchAction • Down - Occurs when a finger or other touch device touches the screen • Up - Occurs when a finger or other touch device is removed or lifted from the screen • Move - Occurs when a finger or other touch device moves but is not performing a Down or an Up action • None - A default value; should never occur in reality. • Cancel - Cancels the gesture. – C++: FormTouch(TObject *Sender, const TTouches Touches, const TTouchAction Action • if (Action == TTouchAction::Down) • Touches[i].Location.X • Touches[i].Location.Y – OP: FormTouch(Sender: TObject; const Touches: TTouches; const Action: TTouchAction) • if Action=TTouchAction.Down then • Touches[i].Location.X • Touches[i].Location.Y
  • 43. EMBARCADERO TECHNOLOGIES Multi-Touch - OnGesture • Standard Gestures: – The standard gestures (Up, Down, Triangle, and so on) are equivalent to Application Gestures on Windows, and to Multi-Touch Sequences on Mac OS X and iOS. Standard gestures are made with one finger on Windows, and with two fingers on Mac OS X. – After the gesture finishes (the user lifts the finger), the OnGesture event is fired (if a standard gesture was recognized). • Interactive Gestures: – The interactive gestures are multi-touch gestures (Zoom, Rotate, and so on) that are equivalent to System Gestures on Windows, and to Gestures on Mac OS X, iOS, and Android. Every time the fingers move on the touch surface, an OnGesture event is fired. – FireMonkey uses the four standard gestures Up, Down, Left, and Right as equivalent to the interactive Swipe gesture (on Mac OS X, iOS, Android, and Windows 8). 43
  • 44. EMBARCADERO TECHNOLOGIES Multi-Monitor • FMX and VCL • VCL - TScreen – Screen.MonitorCount – Screen.Monitors[I].MonitorNum – Screen.Monitors[I].Top – Screen.Monitors[I].Left – Screen.Monitors[I].Width – Screen.Monitors[I].Height • FMX – TScreen – Screen.DisplayCount – Screen.Displays[I].Index – Screen.Displays[I].Bounds.Top – Screen.Displays[I].Bounds.Left – Screen.Displays[I].Bounds.Width – Screen.Displays[I].Bounds.Height – Screen.Displays[I].Primary 44
  • 45. EMBARCADERO TECHNOLOGIES Demonstration FireUI – Multi-Touch, Multi-Monitor 45
  • 46. EMBARCADERO TECHNOLOGIES Summary • FireUI allows you to build one UI for all form factors and platforms • The multi-device designer allows you to create custom and unique UI and user experience • TMultiView component adapts to each device form factor and orientation 46
  • 47. EMBARCADERO TECHNOLOGIES More Information • Form Designer – http://docwiki.embarcadero.com/RADStudio/XE7/en/Form_Designer – http://docwiki.embarcadero.com/RADStudio/XE7/en/Using_FireMonkey_Views – http://docwiki.embarcadero.com/RADStudio/XE7/en/Adding_Views_to_Your_Multi- Device_Project – http://docwiki.embarcadero.com/RADStudio/XE7/en/Adding_a_Customized_View_to_the_Vi ew_Selector – http://docwiki.embarcadero.com/RADStudio/XE7/en/Mobile_Tutorial:_Using_Tab_Componen ts_to_Display_Pages_(iOS_and_Android) • FireMonkey Styles – http://docwiki.embarcadero.com/RADStudio/XE7/en/FireMonkey_Style_Designer – http://docwiki.embarcadero.com/RADStudio/XE7/en/Bitmap_Style_Designer • TMultiView Component – http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.MultiView.TMultiView – http://docwiki.embarcadero.com/RADStudio/XE7/en/Mobile_Tutorial:_Using_a_MultiView_C omponent_to_Display_Alternate_Views_of_Information_(iOS_and_Android) 47
  • 48. EMBARCADERO TECHNOLOGIES More Information • Multi-Touch – http://docwiki.embarcadero.com/RADStudio/XE7/en/Gestures_in_FireM onkey – http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.MultiTouch – http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.Forms.TCommo nCustomForm.OnTouch – http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.Forms.TCommo nCustomForm.OnTap • Multi-Monitor – http://docwiki.embarcadero.com/Libraries/XE7/en/FMX.Forms.TScreen. Displays 48
  • 49. EMBARCADERO TECHNOLOGIES More Information • CodeRage 9 sessions for FireUI – Object Pascal • FireUI and the Multi-Device Designer - https://www.youtube.com/watch?v=cj_geQ3Vz9E • Designing Multi-Device Applications with FireUI and TMultiView - https://www.youtube.com/watch?v=Qkf3n8Cw7_E • What's New in FireMonkey - https://www.youtube.com/watch?v=PScvVpEO-Rs • Touch Management with Object Pascal on all Platforms - https://www.youtube.com/watch?v=lRYT3ToaMK8 – C++ • FireUI and the Multi-Device Designer - https://www.youtube.com/watch?v=zuE1ufYksAg • Designing Multi-Device Applications with FireUI and TMultiView - https://www.youtube.com/watch?v=i3M5T0oWmFU • What's New in FireMonkey - https://www.youtube.com/watch?v=yjm0PxoxHnI 49
  • 50. EMBARCADERO TECHNOLOGIES More Information • Developer Skill Sprints – Landing Page - http://www.embarcadero.com/landing- pages/skill-sprints – YouTube playlist - https://www.youtube.com/playlist?list=PLwUPJvR9mZHhZ TajVWsgaFPLtDA-t1Xwc 50
  • 51. EMBARCADERO TECHNOLOGIES Special offers and bonuses • Enterprise purchases or upgrade from Pro to Enterprise – Receive a 10-user deployment license for Enterprise Mobility Services – January 21 to March 31, 2015 • XE2 and earlier versions registered users – Upgrade from any previous version – Get the upgrade price on RAD Studio XE7, Delphi XE7 or C++Builder XE7 when you purchase the upgrade with 1 year Support and Maintenance – January 12 to March 31, 2015 • Get Free Bonuses until March 31, 2015 – New Object Pascal Handbook by Marco Cantu – Castalia for Delphi 2014.11 – VCL and FireMonkey Premium Styles – Mida Converter Basic 51 Find all the details at http://www.embarcadero.com/radoffer
  • 53. EMBARCADERO TECHNOLOGIES THANK YOU  EMAIL: DAVIDI@EMBARCADERO.COM BLOG: HTTP://EMBT.CO/SIPFROMTHEFIREHOSE TWITTER: @DAVIDI99 53