Archive for the ‘RAD Studio’ Category

Ven a verme en Ciudad de México y Guadalajara

Wednesday, May 15th, 2013

¡Hola!

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!

:)

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;

interface

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

type

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

var
  Form1: TForm1;

implementation

{$R *.fmx}

uses
  FMX.Notification;

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

  if Assigned(NotificationService) then begin
    Notification := TNotification.Create;
    try
      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);
      NotificationService.ScheduleNotification(Notification);
    finally
      Notification.Free;
    end;
  end
end;

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

procedure TForm1.FormCreate(Sender: TObject);
var
  AppEventSvc: IFMXApplicationEventService;
begin
  if TPlatformServices.Current.SupportsPlatformService(IFMXApplicationEventService, IInterface(AppEventSvc)) then
    AppEventSvc.SetApplicationEventHandler(AppEvent);
end;

end.

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!

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".

Enjoy!

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.

Enjoy!

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.

Webinar: C++ in the Multi-Device Enterprise

Wednesday, March 20th, 2013

Across social media, industry articles, and corporate polices, we hear more terms like “BYOD” (Bring Your Own Device).  Enterprises these days are seldom just Windows or Mac, onsite or cloud.  Multiple devices are the new reality for software developers, but how can you keep up with it all?

Join us for “C++ in the Multi-Device Enterprise”, a live webinar on Tuesday, March 26th. This webinar showcases how C++ can help satisfy the Enterprise’s need to support multiple devices on desktops, servers, web, mobile and multi-tiers in their infrastructure.

Sign Up Now!

MVP Nuggets #14 and #15 - New MVPs!

Friday, March 8th, 2013

First off, congrats to the following new MVPs since my last announcement:

Jennifer Kuiper
Volker Hillman
Dmitrii Kuzmenko

This installation of the "MVP Nuggets" covers the period Feb 23-Mar 8.

Francois Piette

High speed generic queue class
Operator overloading for records

Ricardo Boaro

Delphi XE3 pointers on how to use VCL and FireMonkey (Portuguese)
Dynamically Loading Packages in Delphi XE3 (Portuguese)
Installing FireDAC into RAD Studio XE3 (Portuguese translation of Marco’s blog)

Radek Cervinka

Export PDF/A in Fast Report - Czech - English
FireDAC - monitoring the implementation of SQL - Czech - English

Primoz Gabrijelcic

Embarcadero Academy: The Power of XE3

Germán Estévez Ruiz

Persistence of a class structure - Spanish - English

Enjoy!

MVP Nuggets #12 and #13

Monday, February 25th, 2013

This installation of the "MVP Nuggets" covers the period Feb 9-22.

Francois Piette:

Using Universal Plug And Play (UPnP) with Delphi

Marcos Antonio Moreira:

Introduction to Metropolis in Delphi XE3 - Portuguese - English
Zarko Gajic:

Have Hints For Some Delphi Controls Stay Longer – Control Specific Hint Hide Timeout Values
Radek Cervinka:

Synapse for Delphi POSIX (OSX and future Linux, iOS, Android) - Czech - English
Jens Fudge:

Mobile Preview Webinar Summary
Felix Colibri:

Mobile Preview Webinar Summary
Primoz Gabrijelcic:

Workshop: Multithreaded Programming 1.1
Cary Jensen:

Delphi Developer Days 2013 Cities and Dates
Delphi Editor Key Combination Table Updated
Robert Love:

Legacy Code: Scoping
Legacy Code: Abstract to Interface
Nick Hodges:

Review of the Mobile Preview Webinar
Delphi and the Factory Pattern: Simple Factory
Luis Felipe González Torres:

C++Builder XE3. DataSnap (64bits, C++11 auto y lambda) FireMonkey LiveBinding Designer. Mobile Connector (Android, iOS) - Spanish

Enjoy!

Mobile Preview Webinar: Last show at 5pm PST today!

Thursday, February 21st, 2013

Amazing attendance today! We browned out GotoWebinar! We’re sorry if you were among the ones that where turned away when we hit the ceiling.

Fantastic response. Thanks for all of your questions and comments!

We’ve had 3,000+ folks register for this webinar.

Thanks all for watching!

The last live webinar will be at 5pm today - REGISTER NOW!

If you miss this one, the replays will be up within the next two weeks.

Enjoy!


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

Close