Archive for the ‘iPhone’ Category

Ven a verme en Ciudad de México y Guadalajara

Wednesday, May 15th, 2013


Regístrate ya para RAD Studio XE4 en Ciudad de México (21 de Mayo) y/o
RAD Studio XE4 en Guadalajara (22 de Mayo) y ven a verme en persona.

¡Estoy impaciente por verlos!


Getting TWebBrowser on iOS to zoom

Wednesday, May 15th, 2013

There’s currently an issue with TWebBrowser in that it doesn’t allow for zooming. Luckily it’s fairly easy to fix.

I suggest that you make a copy of FMX.WebBrowser.iOS.pas and put it in the same directory as your project. You then add it to your project. This way it will be picked up automagically.

Now for the hardest part… ;)

Make the following change in FMX.WebBrowser.iOS.pas (your copy).

constructor TiOSWebBrowserService.Create;
  FWebView := TUIWebView.Create;
  FWebView.setScalesPageToFit(true); // Add this line of code
  FDelegate := TiOSWebViewDelegate.Create;

Thanks Sarina for the tip!

Developer Direct replays

Friday, May 10th, 2013

Episode 1

The rest will follow… ;)


Push Notifications for iOS

Thursday, May 2nd, 2013

Luis Felipe González Torres (our MVP in Venezuela) published an example of a Delphi XE4 APN server and a Delphi XE4 APN client!!!

The source code is provided. The video is in Spanish, but Luis Felipe is paging through the source code in a very nice manner, so it’s easy to follow along.

Super cool, Luis Felipe! :)


Handling iOS application events

Wednesday, May 1st, 2013

One thing that I’ve wanted to try for quite a while is doing something when an app gets put in the background (user hits the home button for example). An example of this is a game that my kids play - when they leave the game, the character yells out something like "Don’t leave!", "Come back!", "Hope you enjoy your day without me!" and other random fun stuff.

Sometimes it also schedules a notification to fire at a later date. Let’s say the kids forget to play the game for a few days… All of a sudden out of nowhere the iPad will scream at you "Come back and play NOW! I’m bored!"

How is this done? Let’s not waste anymore time… Here is the complete form source code for the simplest case - scheduling a notification upon entering the background.

unit Unit1;


  System.SysUtils, System.Classes, FMX.Forms, FMX.Platform;


  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    { Private declarations }
    { Public declarations }
    function AppEvent(AAppEvent: TApplicationEvent; AContext: TObject) : Boolean;

  Form1: TForm1;


{$R *.fmx}


procedure SendNotification;
  NotificationService: IFMXNotificationCenter;
  Notification: TNotification;
  if TPlatformServices.Current.SupportsPlatformService(IFMXNotificationCenter) then
    NotificationService := TPlatformServices.Current.GetPlatformService(IFMXNotificationCenter) as IFMXNotificationCenter;

  if Assigned(NotificationService) then begin
    Notification := TNotification.Create;
      Notification.Name := 'MyLocalNotification';
      Notification.AlertBody := 'Hello from the Delphi XE4 iOS app that you used 5 seconds ago!';
      Notification.FireDate := Now + EncodeTime(0,0,5,0);

function TForm1.AppEvent(AAppEvent: TApplicationEvent; AContext: TObject) : Boolean;
  if AAppEvent = TApplicationEvent.aeEnteredBackground then

procedure TForm1.FormCreate(Sender: TObject);
  AppEventSvc: IFMXApplicationEventService;
  if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(AppEventSvc)) then


The main things that we do in this code are:

1. Hook up the Application Event Handler on OnCreate of our form
2. Schedule a notication if the event received is aeEnteredBackground

The rest is handled by iOS for us.

Special thanks to Darren Kosinski who shared one of his test examples on how to handle iOS application events!

RAD Studio XE4 is available!

Monday, April 22nd, 2013

Check out the trial here -

Learn all about XE4 at the RAD Studio XE4 Launch Webinar - Wednesday, April 24

  • 6:00AM PDT / 9:00AM EDT / 13:00 UTC
  • 11:00AM PDT / 2:00PM EDT / 18:00 UTC
  • 5:00PM PDT / 8:00PM EDT / 11:00AM 25-Apr Australia EDT

During the webinar you will learn:

  • How multi-device app development with RAD Studio can expand the capabilities and efficiency of your development team
  • How to use RAD Studio XE4 to create true native Delphi applications for iOS devices
  • Accessing and integrating iOS sensors and services
  • Working with local databases and enterprise data
  • Pricing and availability of RAD Studio XE4

Register for the webinar at:

IBLite - embeddable SQL database for iOS

IBLite is a freely deployable, embeddable database for iOS that runs in a stand-alone environment and enables deployment of apps which directly utilize the InterBase engine. IBLite is available exclusively with RAD Studio XE4 (all editions) and Delphi XE4 (Professional with Mobile and above).

Start Building Now

Take the next step in the evolution of multi-device, true native code, on-device prototyping app development with RAD Studio XE4. Start building now.


Delphi for iOS and Apple Instruments

Thursday, March 28th, 2013

Daniel Magin has created a great intro to using Instruments with a Delphi for iOS app.

Awesome, Daniel!

iOS Preview "Early Bird" Special – Save 20% on Delphi Enterprise, RAD Studio Professional/Enterprise with Maintenance

Wednesday, March 27th, 2013

Get Delphi XE3 or RAD Studio XE3 today with the iOS Pre-Release Beta, and save 20% when purchased with 1-year Maintenance. Click here to buy from the Embarcadero store with the 20% discount or click below for other options. Offer available for ESD individual user licenses for Delphi XE3 Enterprise, RAD Studio XE3 Professional and RAD Studio XE3 Enterprise only.

What you get:

  • XE3 Multi-Device development with Windows/Mac and 64-bit
  • iOS Pre-release Beta to start learning mobile development today with Delphi (no AppStore deployment during beta)
  • All updates and major releases over the next 12 months. See the 2013 Roadmap for what we have planned.

Buy Online Buy from a Partner Contact Sales

iOS TableView is ListBox in Delphi for iOS

Monday, March 25th, 2013

This blog post was inspired by a couple of emails that I received in response to my Analog Clock update post.

Keep in mind that this blog post is based on a product that is currently in beta, and that final details may very well change. :)

First, a screen shot:

Going from top to bottom, you will notice:

* Toolbar that hosts a label and a done-button. The specific styling is done using style options for the label and the button.

* ListBox - here’s where the real fun starts.

First of all, the listbox is grouped and transparent to give it the look and feel of individual option groups with a transparent background, and all the nice things like rounded corners and such.

In the "Name" section you’ll notice items with a bitmap - I just "borrowed" some - I didn’t spend time on making them transparent background and all that. My first name is in a default looking TEdit. My last name is in a TEdit with a transparent style. Finally, I’ve indicated that I will send a Christmas card to myself using a TSwitch.

Under "Contact information" you’ll notice a couple of more options for the individual items in a listbox - "check", "more" and "detail".


Anders’ Analog Clock app ported to Delphi for iOS

Friday, March 22nd, 2013

My FireMonkey Clock app has been ported using a beta version of Delphi for iOS.

Main tab

Above you can see a screen shot of the app as it starts up. By default it uses "normal drive" - the second hand moves once per second and the minute hand moves once per minute.

The app is a Universal app (supports iPhone and iPad). The main clock screen uses a TScaledLayout to ensure proper scaling down to the iPhone (the app was designed for the iPad).

If you hit the Info button it will take you to the setup tab, where you can select "Flame" (or FireMonkey second hand) as well as "Smooth drive" - the second and minute hands move smoothly.

Setup tab

The setup screen uses a combination of items that scale and items that don’t scale. For instance, the toolbar, the back button, and the listbox with its items are not supposed to scale, but still be aligned properly. The clock faces, however, do scale inside of a TScaledLayout.

FireMonkey second hand

Above you can see what the FireMonkey second hand looks like.

Below is a screen shot of my Structure Pane where you can see how I designed the app:

Structure View

I also wanted to mention performance. The previous version of the app was created in XE2 where I got about 2-3 frames per second in smooth mode - not very smooth. However, this version created with our upcoming product gets a blazing 60 frames per second on the iPad 3 using iOS 6.1.3 and almost the same fps rate on iPhone 4 (iOS 5.1) and iPad 2 (iOS 6.1) at about 55+ frames per second.


PS: The screen shots above are actually from the *next* update I will be pushing soon… The current one looks almost the same, except for a few changes in layout.

Bad Behavior has blocked 1323 access attempts in the last 7 days.