In action
1 / 112

… in ACTION! - PowerPoint PPT Presentation

  • Uploaded on

… in ACTION!. David Intersimone “David I” Vice President of Developer Relations and Chief Evangelist [email protected] Agenda. RAD Studio XE2 Overview FireMonkey Overview Break FireMonkey Principles Applied FireMonkey Break Platform C onsiderations End-to-End FireMonkey

I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
Download Presentation

PowerPoint Slideshow about ' … in ACTION!' - colby-riley

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.

- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
In action

… in ACTION!

David Intersimone “David I”

Vice President of Developer Relations and Chief Evangelist

[email protected]


  • RAD Studio XE2 Overview

  • FireMonkey Overview

  • Break

  • FireMonkey Principles

  • Applied FireMonkey

  • Break

  • Platform Considerations

  • End-to-End FireMonkey

  • Android and iOS mobile development with RadPHP XE2

  • Delphi for 64-bit Windows

  • Summary and Close

Rad studio xe overview

RAD Studio XE Overview

Windows, Macintosh, Web and Mobile Development

Rad studio xe2
RAD Studio XE2

…and more!

Fast native applications for windows macintosh web and mobile
Fast Native applications for Windows, Macintosh, Web and Mobile

  • Write app once, compile for multiple platforms

  • Data-rich, Component-based

  • Delphi and C++ native code performance

  • Delphi for 64-bit Windows

  • VCL Styles

  • RadPHP for full visual web development

Introducing Mobile

The Next Generation Business Application Platform

  • Stunning HD and 3D Business Applications

  • Native Power and Performance

  • Connect with any Data and Services

  • Full Suite of UI Controls

  • Visualize Live Data

  • Styled Vector UIs without coding

  • Communicate with Animations

  • No-Code Hardware Effects

A pplications that connect everywhere
A Mobilepplications that Connect Everywhere

  • High-speed connectivityto popular databases

  • Multi-tier applications

  • Clients on multiplecomputers and devices

  • Connect to the worldof data, services,and the cloud

Mobile choices for you and your users
Mobile choices for you and your users Mobile

  • Native mobile apps for DataSnap

    • iOS, Android, Blackberry, and Windows Phone 7

    • Delphi and C++Builder DataSnap Servers

  • Mobile-optimized PHP web apps

    • Web apps that look great

    • Web apps that work great on mobile devices

    • Package applications for distribution

    • Sell on Apple App Store and Android Marketplace

Rad studio xe2 editions for every developer
RAD Studio XE2 - Editions for Every Developer Mobile

  • Starter (Delphi/C++Builder)

  • Professional

  • Enterprise

  • Ultimate

  • Architect

Beyond xe2
Beyond XE2 Mobile

  • Frequent and regular FireMonkey updates

  • Expanded Mobile UI and Device support including

    • Location, Camera, Accelerometers, etc.

  • Next generation compilers

    • Delphi compiler - multiple HW/OS targets

    • RAD C++ compiler - multiple HW/OS targets

    • 64bit RAD C++

    • GPU computing

    • Parallel programming

    • Delphi and C++ native ARM Support

      • Extended iOS support

      • Android support

  • Win8/Metro support - Intel & ARM

Firemonkey overview

FireMonkey Mobile Overview

The Next Generation Application Development Platform

FireMonkey Mobile

  • Next generation CPU/GPU powered application platform for business, enabling developers to rapidly build visually engaging HD and 3D applications with blazing performance on

  • Windows, Mac and Mobile

Firemonkey is application development platform
FireMonkey is MobileApplication Development Platform




Mac OS


Business industry software stuck in past
Business/Industry Software Stuck in Past Mobile

  • 90’s Windows user experiences

  • Confined to mouse/keyboard interaction

  • Complex to learn - slow to use

Consumer s oftware i nnovative user experience
Consumer MobileSoftware - Innovative User Experience

  • Media and graphics rich user experiences

  • Intuitive and interactive – easy to learn

  • Touch and motion interaction

Consumer software renaissance
Consumer Software Renaissance Mobile

  • Media and graphics Rich user experiences

  • Intuitive and interactive – easy to learn

  • Simulated real world physics

  • Touch and motion interaction

Key markets
Key Markets Mobile

  • ISV’s / Packaged Software

  • Healthcare / Medical

  • Manufacturing

  • Financial Services

  • Telecommunications

  • Energy

  • Aviation & Automotive

  • BioSciences

  • Pharmaceuticals

  • Utilities

Shortcomings of today s s olutions
Shortcomings of Today’s MobileSolutions

Script and VM/JIT engines lack UX (User Experience) performance, responsiveness, and hardware accessibility for desktop business, ISV, and Vertical industry applications

Firemonkey is not
FireMonkey is not … Mobile



Game Engine


User experience
User Experience Mobile


Business SW

is stuck here


UE Richness


UE Performance

Firemonkey rich business a pplications
FireMonkey – Rich Business MobileApplications

More visually stunning and interactive

More power and performance

More connected

Firemonkey rich b usiness a pplications
FireMonkey – Rich MobileBusiness Applications

More visually stunning and interactive

More power and performance

More connected

Hd forms
HD Forms Mobile

  • High performance GPU powered Scalable Vector Uis

  • Maximum resolution on any device

  • Hundreds of visual UI components

  • GPU based Style Engine to control UI look & feel

  • HUDs with transparencies and transition effects

3d forms
3D Forms Mobile

  • GPU powered 3D Forms

  • Hardware based lighting, textures, and animation

  • 3D Forms can contain HD UI elements and effects

Effects animation
Effects & Animation Mobile

  • 50+ Photoshop-like GPU Effects

  • Simultaneous multiple effects without performance hit

  • Path based animation for all HD and 3D UI and graphics

Demonstrations Mobile

  • Delphi and C++ project types

  • HD and 3D business apps and database

  • Using Styles

  • Using Effects and Animations

Firemonkey rich b usiness applications
FireMonkey – Rich MobileBusiness Applications

More visually stunning and interactive

More power and performance

More connected

Development speed fast p rototyping
Development Speed – Fast MobilePrototyping

  • Rapid Application Development to reduce development time

  • Show customers what they are looking for with fast prototyping

  • Easily move from prototype to production without wasted effort

Development speed built in components
Development Speed - Built-in Components Mobile

  • Built-in advanced components to increase quality and functionality including:

    • user interface components

    • database

    • multi-tier

    • web apps

  • Extend and customize components

  • Create your own components

  • Use free and commercial components created by the developer community

Native cpu gpu application platform
Native CPU/GPU Application Platform Mobile

  • Compile natively to Windows, Mac, and iOS

  • Application, database, and animation are CPU powered

  • All UI, graphics, and effects are GPU powered

Demonstrations Mobile

  • Pixel Shader

  • Simple native Windows/Mac/iOS demo

Firemonkey rich b usiness a pplications1
FireMonkey – MobileRich Business Applications

More visually stunning and interactive

More power and performance

More connected

Enterprise database connectivity
Enterprise Database Connectivity Mobile

  • Built-in native connectivity to all popular databases

  • Connectivity with Amazon and Azure cloud services

Livebindings data visualization
LiveBindings Mobile Data Visualization

  • Connect any UI, HD, or 3D graphics to any data source

  • Create active “interdependent” bindings

Demonstrations Mobile

  • FireFlow

  • MultiFormView

  • MultiFormViewApp

  • VCL and FireMonkey together

  • MIDA VCL to FireMonkey converter – first look

Overview summary
Overview Summary Mobile

Quickly create visually stunning HD and 3D business applications with blazing native performance on Windows, Mac and iOS

Ensure high performance of your business applications by utilizing the full GPU power of today’s hardware

Handle any architecture requirement with the ability to easily connect to multiple devices, databases, protocols and services


Break Mobile

Firemonkey principles

FireMonkey Principles Mobile

Lights! Camera! Action!

Firemonkey hd 3d and gpu
“FireMonkey” – HD, 3D, and GPU Mobile

  • FireMonkey takes advantage of GPU whenever possible

  • HD Form can be rendered on a computer without a GPU with a few restrictions:

    • No TViewport3D, No Shader based Filters

  • A 3D Form requires a GPU - performs sophisticated transitions and manipulations of the user interface…

    … in other words, a 3D form may be the best choice for building a sophisticated HD user interface

Comparing vcl fmx
Comparing Mobile VCL & FMX

  • FMX and VCL share Common Ancestry

  • TObjectTPersistentTComponent

  • After TComponent dramatically different…

Courtesy: Ray Konopka

Raize Software

VCL Mobile

Courtesy: Ray Konopka

Raize Software

FMX Mobile

Courtesy: Ray Konopka

Raize Software

Comparing vcl fmx1
Comparing Mobile VCL & FMX

  • Event model is the same

  • Persistence is shared

  • No Component Messages in FMX

  • Coordinate System

    • Origin is upper left

    • VCL – Integer

    • FMX – Floating-point

  • Property changes

    • Caption ➜ Text (except for TForm)

    • Left, Top ➜Position.X, Position.Y

Courtesy: Ray Konopka

Raize Software

Owners parents and children
Owners, Parents, and Children Mobile

  • Concept of Ownership is the same

  • FMX has the notion of Parent, but it is not quite the same as in VCL

  • Any control can be the parent of another control

    • Not restricted to container-like controls.

    • e.g. a TEdit can be the parent of a TLabel

  • Child objects share attributes of parent

    • Coordinate space

    • Visibility & Opacity

    • Rotation & Scale.

Courtesy: Ray Konopka

Raize Software

Tcanvas differences
TCanvas Mobile Differences

  • More abstract in FMX than in VCL

    • i.e. not a direct wrapper around device context

  • Fills and Strokes handled by separate calls

    • FillRect

    • DrawRect

  • Text displayed using FillText

    • Draws text and fills with specified TBrush

    • Allows gradient fills in text

  • However, rarely use TCanvas directly

    • Use primitives instead.

Courtesy: Ray Konopka

Raize Software

Supported platforms
Supported Mobile Platforms

  • RTL is shared between VCL & FMX

  • VCL and FMX are more than Component Libraries, they are Application frameworks

  • As a result, you cannot intermix VCL & FMX in the same application.

Courtesy: Ray Konopka

Raize Software

3d programming
3D Programming Mobile

  • One object model to target multiple platforms

  • FM uses right-handed orientation in 3D

  • Hardware acceleration

    • Windows – DirectX

    • MacOS – OpenGL

    • iOS – OpenGL ES

Firemonkey graphics architecture
FireMonkey Graphics Architecture Mobile


*) Delphi only in XE2

Firemonkey technology
FireMonkey Technology Mobile

  • Windows - Direct2D for HD, Direct3D for 3D

    • Note: FireMonkey can use GDI+ for HD vector forms/controls, when GPU is not available

  • Mac- Quartz for HD, OpenGL for 3D

  • iOS - Core:Graphics for HD, OpenGL/ES for 3D

Firemonkey graphic elements
FireMonkey Mobile graphic elements

  • HD

    • TLayout, TScaledLayout

    • TGridLayout, TScrollBox

    • Shapes

  • 3D

    • TLayout3D, TLayer3D

    • TViewport3D

    • TCamera, TLight

    • Shapes including TMesh, TModel3D, TGrid3D

  • Grids

    • TStringGrid, TGrid

When to use hd 3d animations effects
When to use HD, 3D, Animations, Effects Mobile

  • UI guidelines and things to consider

    • Effects (glow) to draw attention to control

    • Animations for appearance of UI elements

    • Opacity – dim parts of a complex form

    • Move non-focus parts of 3D UI into the distance

    • Using a 2D mouse in a 3D world – button use

    • Use ViewPort3D in an HD form

Demonstrations Mobile

  • Controls Demo – scaling forms/controls

  • Lights, Camera, Action!

Applied firemonkey

Applied FireMonkey Mobile

Styles, Animations, Filters and LiveBindings

Applied firemonkey1
Applied FireMonkey Mobile

  • Styles

  • Animations

  • Effects/Filters

  • Building Components

  • LiveBindings

Firemonkey styles
FireMonkey Styles Mobile

  • FireMonkey Stylebook

    • Any object inherited from TBaseObject

    • Set StyleName to identify

    • Found using FindStyleResource method from parented object

    • Stored In / Loaded From a stream file

  • FireMonkey Styles

    • A collection of FireMonkey resource style

    • WPF type of implementation

    • Styles can be inherited, saved, loaded

    • Look and Feel style files for Win7, MacOS, iOS and custom themes

Firemonkey animation
MobileFireMonkey” – Animation

  • Used to modify property values over time

  • Machine speed independent

  • Can be looped and / or reversed

  • Can follow a variety of time / value curves

  • Can be triggered by MouseOver, Focus, Visibility, etc.

Firemonkey effects filters
MobileFireMonkey” – Effects / Filters

  • Can be applied to bitmaps

  • Can be applied to controls

  • Can be triggered by MouseOver, Focus, Visibility, etc.

  • GPU shader based implementation

Building firemonkey components
Building MobileFireMonkey Components

  • Bruno/Ray slides

  • Docwilki

Firemonkey components the process
FireMonkey Components - The Process Mobile

  • Basically the same as creating VCL components

  • Prepare for new component

    • Create a new directory

    • Create a test application

  • Create the component unit

    • Manually or Component Expert?

    • Name the component

    • Create the component class

  • Test runtime behavior

    • Dynamically create component in test application.

Courtesy: Ray Konopka

Raize Software

The process cont
The Process (cont.) Mobile

  • Register and install component

    • Register component in a new or existing registration unit

    • Add component unit to a runtime package

    • Add registration unit to design package

      • which will require the runtime package

    • Build packages, deploy, install

  • Test design-time behavior.

Courtesy: Ray Konopka

Raize Software

Creating new styles
Creating Mobile new Styles

  • Use the built-in Style Designer

  • Save to *.style file

  • Create separate styles to handle platform differences

Courtesy: Ray Konopka

Raize Software

Component guidelines
Component Guidelines Mobile

  • Use Styles

    • Name style elements appropriately

    • Be sure to document all Style contracts

  • Utilize primitives for painting whenever possible

    • When used within styles, they can be replaced or subclassed

  • Complex controls can be built through code with styled components.

Courtesy: Ray Konopka

Raize Software

Livebinding engine
LiveBinding Engine Mobile

  • Allows developers to create live binding in run-time between components/objects at design-time.

  • The LiveBinding visual components use the engine:

    • TBindScope for bindings to components

    • TBindScopeDB for bindings to databases

    • TBindingsList for holding of binding lists

  • A number of conversion services in the box and allows to create new conversion service

  • Automatic updates

    • Expressions automatically re-evaluated when a variable (e.g.; property) referenced by an expression has changed value.

    • Requires - external notification – Notify(object, ‘variable’);

Expression engine simple expressions
Expression Engine – Simple Expressions Mobile

  • Operators: +, -, /, *

  • Literals: ‘abc’, 1, 1.23, True, False, nil

  • Scope: Provides symbols and values available to an expression. Includes operators. Scopes may be nested.

  • TDictionaryScope: Associates a name with an object

  • Expression string: String to evaluate

  • TBindingExpression: Expression engine object which holds a scope and expression string.

  • Evaluate: Expression engine processes the expression string and returns a value.

  • TValue: Delphi RTTI representation of a value. May be an object, string, integer, array, etc.

Expression engine simple expressions1
Expression Engine – Simple Expressions Mobile

  • Built-in Methods: Global methods registered by the expression engine

  • WrapObject(): Create a scope which exposes members of the object, including properties and methods

  • RTTI: Delphi RTTI is used by expression engine to access the member of an object

  • Self: A scope can be associated with “Self”. Members can be accessed without a qualifier.

  • Association: A scope can be associated with a name. The name is used as a qualifier.

  • Custom Methods: Global methods registered in user code

Expression engine binding scope etc
Expression Engine – Binding, Scope, etc Mobile

  • Binding: Expressions are used to assign from one value to another

  • Input expression and scope: Evaluated to get the input value

  • Output expression and scope: Evaluated to get the output location

  • Managed: Managed bindings are owned by the expression engine and may be automatically re-evaluated.

  • Unmanaged: Unmanaged bindings are owned by application and must be explicitly evaluated by calling Evaluate.

Expression engine unmanaged bindings
Expression Engine – Unmanaged Bindings Mobile

  • Output Converters

    • Used when assigning the value of the input to the location of the output.

    • Typically used to handle assignment of mismatched types such as integer to string.

Expression engine managed bindings
Expression Engine – Managed Bindings Mobile

  • Notify()

    • The Notify method informs the manager that the value of an object/property has changed.

    • The manager will re-evaluate dependent bindings.

  • Events

    • Events are called during expression evaluation.

      • OnAssigning

      • OnAssign

      • OnException

Components unmanaged binding
Components – Unmanaged Binding Mobile

  • TBindExpression

    • Component to create a managed or unmanaged binding

    • Properties

      • SourceComponent

      • SourceExpression

      • ControlComponent

      • ControlExpression

      • Direction

  • TBindScope

    • Component to wrap a TObject in a scope

    • Properties

      • DataObject

Components unmanaged bindings
Components – Unmanaged Bindings Mobile

  • TBindExprItems

    • Component to create one or more managed or unmanaged binding

    • Properties

      • SourceComponent

      • SourceExpression

      • ControlComponent

      • ControlExpression

      • FormatExpressions collection

Components designing tbindexpression
Components – Designing MobileTBindExpression

  • TBindingsList: List of binding components such as TBindExprItems

  • Bindings List Editor: Edits the list of binding components

  • TBindExpression

    • properties

      • Active

        • Binding expressions are evaluated when Active is set to True

      • AutoActivate

        • Set Active when the component is loaded

  • Expression Editor

    • Edit the expression strings of a binding component

    • Test expressions

Demonstrations Mobile

  • Styles

    • Loading a style from resource, file?

    • Modifying styles at design time and runtime

      • Style Lookup, Apply Style?

  • Animations and effects

  • LiveBindings

    • BindScopeDB – uses DataSource

    • Managed and Unmanaged bindings

    • Circle example method for condition test returning color

  • Building components - TRkDialogButtons for FMX


Break Mobile

Platform considerations

Platform Considerations Mobile

Deployment to Windows, OSX and iOS

Platform considerations1
Platform Considerations Mobile

  • Project Types

  • Windows, Mac, iOS

  • Project | Deployment

    • Feature Files

    • Additional files

  • Platform Assistant

    • Debugging, Deployment

    • Win32, Win64, Mac

Firemonkey and cross platform
FireMonkey Mobile and Cross Platform

  • FM is a platform that supports

    • RTL

    • GUI

    • Database

    • Operating System

  • Compile / Run on all platforms we support *

    • * subset for mobile platforms

Firemonkey ios
FireMonkey MobileiOS

  • UI design on Windows

  • Handling devices, orientation

  • Code for iOS hardware, file system, OS

  • Anders’ slides


Ios user interface guidelines
iOS Mobile User Interface Guidelines

  • Find the problems… ;)

    • Green buttons? Maybe…

    • Button font size?

    • Scroll bars?

Ios user interface guidelines1
iOS Mobile User Interface Guidelines

  • That’s better!

  • Need to turn off scroll bars!

  • Edit box at the bottom? No!

    • Has to be upper half of screen

    • Why?

Ios user interface guidelines2
iOS Mobile User Interface Guidelines

  • We’re getting somewhere!

  • But wait…

  • Rounded corners?

Ios user interface guidelines3
iOS Mobile User Interface Guidelines

  • Nice!

  • Modeled after the Contacts app

    • Edit boxes have labels in them

    • Text fields are right adjusted

  • Minute details remain

    • Text in memo should be padded more

    • Maybe Panel with Label and Edit (LJ) inside?

    • Button should have rounded edges to it

Ios user interface guidelines4
iOS Mobile User Interface Guidelines

  • Close!

Ios user interface guidelines resources
iOS Mobile User Interface Guidelines Resources

  • iOS Human Interface Guidelines web site


  • Apple’s iOS Human Interface Guidelines


Handling multi platform issues
Handling Multi-Platform issues Mobile

  • TMenuBar – UseOSMenu property

  • Dialogs, ShowMessage

  • File System – IOUtils – Win/Mac

  • Malcolm’s hidden user files

  • TRegistryvsTIniFile

  • TOSVersion (run time), conditional defines (compile time)

  • File Volume/Path issues

  • DLLs, Dylibs

  • Debugging

Demonstrations Mobile

  • TOSversion database example

  • UseMenuBar

  • iOS client applications

End to end firemonkey

End-to-End FireMonkey Mobile

Enterprise Solutions

Enterprise landscape
Enterprise Landscape Mobile


  • JEE

  • WCF

  • DataSnap

  • SOA

  • SaaS

  • PaaS

End to end firemonkey1
End-to-End FireMonkey Mobile

FireMonkey client and …

  • Scenario 1: Remote RDBMS or Cloud Storage

  • Scenario 2: XML/SOAP & JSON/REST Web Services

  • Scenario 3: Delphi/C++ DataSnap server deployed to EC2 cloud

  • Scenario 4: Delphi FM iOS client to DataSnap server

  • Scenario 5: FireMonkey client connected to Enterprise Infrastructure – JEE, CORBA, and .NET

Scenario 5 firemonkey net web service
Scenario 5: FireMonkey & .NET Web Service Mobile

  • .NET WCF web service

  • Embarcadero Prism console application

  • FireMonkey client

  • WSDL importer and HTTPRIO component

Demonstration Mobile

  • Embarcadero Prism WCF calculator service

Android and ios app development with radphp xe2
Android and MobileiOS app development with RadPHP XE2

JQueryMobile visual, component-based development of mobile optimized web pages

Create iOS and Android applications that you can sell on the Apple and Android app stores

Demonstration Mobile

  • RadPHP XE2 – web mobile client

  • RadPHP XE2 – native mobile clients

What s the same
What’s the same? Mobile

  • Integer, Longint, Cardinal – still 32bits

  • Int64, UInt64 – still 64bits

  • UnicodeString, AnsiString, WideString

  • Exceptions

  • Runtime Library (RTL)

  • SysUtils, Classes, etc…

What s different
What’s different? Mobile

  • NativeInt, NativeUint – 64bits

  • Pointer (all pointers) – 64bits

  • Dynamic Arrays – 64bit indexing

  • Floating point math - Double

Delphi 32 and 64 bit pointer types
Delphi 32 and 64-bit Pointer Types Mobile

Pointer types Delphi/32 Delphi/64



Class instance

Class reference


AnsiString 4 bytes 8 bytes



Procedure pointer

Dynamic array




Delphi 64 bit on windows
Delphi 64-bit on Windows Mobile

  • Same Windows API

    • CreateWindowEx, PeekMessage, etc..

  • Same Delphi RTL

    • SysUtils, Classes, Generics.Collections, etc…

  • Same VCL

    • Forms, Graphics, Controls, Menus, etc..

Delphi 64 bit on windows some gotcha s
Delphi 64-bit on Windows – some Mobilegotcha’s

  • SizeOf(Pointer) <> SizeOf(Integer)

    • Integer<->Pointer casts will break in 64bit

    • SizeOf(THandle) = SizeOf(Pointer)

    • All Handles = SizeOf(Pointer) (HWND, HDC, etc..).

  • All code in process must be 64bit

    • Must have 64bit versions of external non-Delphi libraries (DLLs)

  • One, and only one, calling convention

    • register, pascal, cdecl, stdcall are ignored.

  • safecall is still “special”

  • Old “pointer math” code may break

    • Works in 32 and 64bit: MyPtr := PByte(P) + 10;

  • TList’s internal FList is now a TPointerList. Used to be a PPointerList. Removing ^ should be sufficient to port from 32-bit to 64-bit.

  • Tag property is now a NativeInt (32-bit vs 64-bit)

Delphi 64 bit on windows some gotcha s1
Delphi 64-bit on Windows – some Mobilegotcha’s

  • Inline Assembly

    • Cannot mix asm blocks with Pascal code

    • Only procedural level asm blocks supported

    • Stack must be 16-byte aligned at each call instruction

    • Define locals for temp storage

    • Do not modify the RSP stack pointer

    • New unified calling convention. First 4 parameters in registers, RCX, RDX, R8, R9 (or XMM0-XMM3)

  • Exception unwinding

    • No change for pure Delphi code. Exceptions function identically.

    • Inline Assembly can cause exception unwinding to fail if not properly written.

  • SHL/SHR – 32-bit values (Integer et al) will only shift in 32-bit space. 64-bit values will of course shift in 64-bit space.

  • No Extended type in 64-bit. Use TExtendedRec80 if necessary (binary files with Extendeds in them for instance)

Windows api gotcha s
Windows API Mobilegotcha’s

  • SetWindowLong / GetWindowLong should be replaced by SetWindowLongPtr / GetWindowLongPtr for GWLP_HINSTANCE, GWLP_WNDPROC, etc… as they return pointers and handles.

    • Pointers passed to SetWindowLongPtr should be type-casted to LONG_PTR and not to Integer / Longint.

  • SetWindowLong mapped to SetWindowLongPtr in Windows.pas.

    • Calls to our declaration of SetWindowLong are safe, as long as they are cast correctly.

Windows api gotcha s con t
Windows API Mobilegotcha’s (con’t)

  • Use explicit casts to WPARAM and LPARAM where appropriate.

    • Example: Passing pointers through SendMessageSendMessage(hWnd, WM_SETTEXT, 0, LPARAM(@MyCharArray));

  • Use LRESULT to cast message results

    • Example: Message.Result := LRESULT(Self);

  • Message cracker records (TWMxxx) changed

    • Alignment changes and field-size changes


Summary Mobile

FireMonkey Mobile

  • FireMonkey - The Next Generation Business Application Platform

  • Fully harness the powerful GPU graphics hardware

  • Rapidly build visually spectacular applications

  • Invest in one platform and deploy to numerous OS-s

  • Delphi and C++ compiled, native executable

  • Fully programmable animations and effects

  • Your imagination is the only limit !!!


Rad studio xe21
RAD Studio XE2 Mobile

The ultimate application development suite for Windows, Mac, mobile and Web

  • Deliver Fast Native Applications on Windows, Mac, Web and Mobile

  • Speed Up Your Development Process with RAD

  • Create Visually Stunning and Interactive Business Applications

  • Build Applications that Connect Everywhere

  • Break Free from Grids – Visualize Live Data

Resources Mobile

  • RAD Studio XE2 samples on SourceForge


  • FireMonkey components Guide


  • Anders Ohlsson FireMonkey iOS blog


  • CodeRage 6 – session replays


  • RAIZE Software


  • MIDA VCL to FireMonkey Converter


  • JQueryMobile


Q&A Mobile

Z skejte licence nav c
Získejte licence navíc Mobile

Nabídka platí pro objednávky podané od 3.11. do 30.12.2011

Produkty získané zdarma si musíte vyžádat do 15.1.2012

Co je co
Co je co Mobile

  • Rapid SQL XE2 – je integrované vývojové prostředí jazyka SQL, které vám umožní vytvářet výkonný kód SQL pro vaše aplikace napsané v Delphi a C++Builderu.

  • Fastcube – je nástroj pro efektivní analýzu dat.

  • DB Optimizer XE2 – pomůže vám zvýšit celkový výkon vašich databázových aplikací a maximalizovat odezvu databází.

  • DB Change Manager XE2 – umožní vám sledovat a zvládat změny v používaných databázích stejným způsobem, jakým například sledujete změny zdrojového kódu.

Pamatujte taky e
Pamatujte taky, že … Mobile

  • Možnost upgrade z verze 2007 na verzi novější skončí zároveň s koncem roku 2011

  • S nákupem verze XE2 produktu z rodiny RAD Studio XE2 získáte i starší verze XE, 2010, 2009, 2007 a Delphi 7 či C++Builder 6

  • S nákupem verze XE2 získáte to, co zatím nemáte a jinde nenajdete:

    • 64bitový kompilátor Delphipro aplikace, které využijí možnosti nejnovějšího hardware

    • Skutečně oslňující vizuální obchodní aplikace vytvořené pomocí komponent FireMonkey™

    • Výkonné nativní aplikace proWindows, Mac a iOS

    • LiveBindings™ dovolící propojit jakýkoli vizuální prvek s libovolným typem dat

    • Propojitenost s mobilními systémy a cloudempomocí vícevrstvé technologie DataSnap

Dal informace najdete zde
Další Mobileinformace najdete zde

Borland s.r.o.

Belgická 15, 120 00 Praha 2, CZ

e-mail: [email protected]

telefon: +420 273 132 190

Thank you

Thank You Mobile

[email protected]