Stay in touch

Add your e-mail address here to receive the monthly TMS Software alerts.


Product releases
Product articles
Technical articles
Website changes
Software development


<< >>
October 2015

Thursday, October 01, 2015

This was the month September at

Another busy month went by at and so much happened that it is good to quickly summarize everything new that was introduced.

TMS All-Access

We introduced the TMS All-Access subscription which is an easy no-nonsense subscription to simply ALL our products. ALL products means all products we offer now but also all new products we'll release in the year of the subscription. It gives you also access to betas, previews and of course our priority support services. So, with TMS All-Access, you never have to worry again if you will miss something or if you have to take budget in account for future products. TMS All-Access has you covered for VCL, FMX, .NET, IntraWeb and new frameworks we'll start to support in the coming months.

TMS Component Pack v8.0

A major update of our popular UI suite, featuring meanwhile over 400 components was released. Highlight of this new release is TAdvTreeView. TAdvTreeView is a high-performance & feature-rich, multi-column treeview that easily handles millions of nodes. TAdvTreeView can be used in virtual & normal modes. Other new components are TAdvMultiInputQueryDialog and TAdvScrollMenu and as always, there are numerous extensions to existing components in the suite.

TMS VCL Cloud Pack, TMS FMX Cloud Pack

The goal of our TMS Cloud products is to make consuming popular cloud services from your client applications as seamless as possible. Be it from Windows VCL apps, FMX cross platform apps, .NET Windows or web apps or IntraWeb web apps, with our cloud components, access to these cloud services is plug & play. In new versions of the cloud packs is now also support for Google Analytics, GMail, Google Sheets, Trello & Stripe payments.

TMS Hands-on training day

Our team also started the planning of a new focused hands-on training day on using our components. In a small group, we aim to give you as much as possible insights, tips & tricks in using our VCL, FMX, Cloud components. Number of attendees is kept small to have as much interaction as possible and have the ability to look at your specific questions. A few places are still available, so register quickly if you want to participate.

TMS Flexcel DLL

We're proud to have released a new product this month, which is TMS Flexcel DLL. With TMS Flexcel DLL, the power of the Flexcel library to natively handle .XLS, .XLSX files becomes available to any programming language for Windows that is able to use DLLs.

TMS Pack for FireMonkey v3.2

Also for TMS Pack for FireMonkey, we released a major update. Our flag-ship suite of FMX controls features grids, planner, rich-text/html editor, syntax highlighting memo and with this new release from now on also a powerful treeview control. This high-performance, editable, optionally multi-column treeview deals with millions of nodes in a regular or virtual way. Also new is a virtual keyboard for touchscreens on Windows and Mac OS X.

RAD Studio 10 Seattle support

Our entire product suite got support for RAD Studio 10 Seattle. All active registered users get free updates of our products with now included RAD Studio 10 Seattle support.

New developments

And if this was not enough, our team was meanwhile also busy with research on new developments on VCL, FMX components as well as new products in the area of cloud, node.js, embedded C++, IoT, mobile, remoting, replication and more... Watch this space for announcements soon.


Nancy Lescouhier

This blog post has received 1 comment. Add a comment.

Wednesday, September 23, 2015

Fixing the FMX TWebBrowser issue on iOS 9

Update: You now optionally add additional keys in the iOS9Fix_config.txt file

Linking against iOS 9 introduces the new Application Transport Security feature that enforces a secure network connection. This means that in a default RAD Studio 10 Seattle project, the default TWebBrowser but also our TTMSFMXWebBrowser, TTMSFMXWebGMaps,
TTMSFMXWebOSMaps components and the TMS Cloud Pack for FireMonkey cloud services can no longer make a connection to the web. A solution for this issue is to add the following key to the Info.plist file:


As the Info.plist is automatically generated based on the project options, there is no option to specify a boolean key in a dictionary. To make sure the Info.plist file contains the correct keys in order to link against iOS 9 we have created an iOS9Fix command line executable and a post-build command.

1) Copy the iOS9Fix.exe & iOS9Fix_config.txt files to the project directory.

2) Add the following post-build command to your project options.

call "$(PROJECTDIR)\iOS9Fix.exe" "$(OUTPUTPATH).info.plist"

If the above steps are executed correctly, your application should then be able to make a connection with one of the components mentioned in this blog post.

The solution with the above instructions can be downloaded at


Pieter Scheldeman

This blog post has received 3 comments. Add a comment.

Monday, September 14, 2015

TMS hands-on training day

TMS software organizes a new training day on Tuesday November 24th in Kortrijk, Belgium. On this training day we will cover following 3 product areas to help you getting the maximum out of your applications with TMS components:
  • TMS VCL UI components for Windows application development.
  • TMS FireMonkey UI components for cross-platform FireMonkey application development.
  • TMS components to access cloud services from Windows and FireMonkey applications.

In tentative program

  • 09h00-09h30: Registration & coffee
  • 09h30-10h30: In depth with TMS VCL components pt 1
  • 10h30-10h45: Q&A
  • 10h45-11h15: Coffee break
  • 11h15-12h15: In depth with TMS VCL components pt 2
  • 12h15-12h30: Q&A
  • 12h30-13h30: Lunch
  • 13h30-14h30: In depth with TMS FireMonkey components pt 1
  • 14h30-14h45: Q&A
  • 14h45-15h15: Coffee break
  • 15h15-16h15: In depth with TMS FireMonkey components pt 2
  • 16h15-16h30: Q&A
  • 16h30-17h30: In depth with TMS Cloud components
  • 17h30-17h45: Q&A
Given the large number of components we have, we like to hear which topics are of most interest to you to fine-tune our program to your needs. Therefore you can vote on your favorite topics in the online registration form

We also suggest to bring your laptop if you want to follow the samples live or if you want one of our experts to have a look at your implementations. For a maximum interactivity, the number of seats will be limited to 20 persons.

Registrations until October 31st

The cost of the TMS training day is 75 EU + VAT. This includes a full day access to the sessions and coffee/drinks during this day. A hot meal is served for lunch.


  • Kennedy Hotel, Pres. Kennedypark 1, B-8500 Kortrijk
  • Free parking
  • Nearby highway (E17) exit
  • Facilities for hotel rooms at the event are available for international attendees


Nancy Lescouhier

This blog post has received 1 comment. Add a comment.

Wednesday, August 12, 2015

Querying objects in your REST server with XData

One of my favourite features of TMS XData is its powerful querying capabilities. With no extra line of code in your server, clients can choose how to retrieve the server objects, filter them, set an order, etc..
For example, you can perform a GET request to get Customer objects but filter only those which name is John:
http://server:2001/tms/xdata/Customer?$filter=Name eq 'John'

You can also filter by properties of associated objects, at any level. The next example gets all customers which associated country name is "USA":
http://server:2001/tms/xdata/Customer?$filter=Country/Name eq 'USA'

You can use order, top and skip to get paged results (get next 20 orders from 41st one):

And, of course, you can combine all those with parenthesis and relational operators to build really complex queries:
http://server:2001/tms/xdata/Customer?$filter=(Name eq 'John' or Name eq 'Jack') and Country/Name eq 'USA'

But the purpose of this post is to tell about the new built-in functions introduced in version 1.5. They increase flexibility of the queries even more. Functions that extract part of of a date/time property were added, so now you can for example filter invoices for year 2014:
http://server:2001/tms/xdata/Invoice?$filter=year(IssueDate) eq 2014

There are of course similar functions to extract Month, Day, Hour, Minute and Second.
String-related functions were also added. Upper and Lower were introduced:
http://server:2001/tms/xdata/Customer?$filter=lower(Name) eq 'paul'

You can also use length function to retrieve the length of a string in characters:
http://server:2001/tms/xdata/Customer?$filter=length(Name) eq 15

And Position and Substring functions can also be used to retrieve the position of a substring in a string (Position) or to retrieve part of a string (Substring). They would be the equivalent of Delphi functions Pos and Copy, respectively:
http://server:2001/tms/xdata/Customer?$filter=substring(CompanyName, 2, 4) eq 'oogl'
http://server:2001/tms/xdata/Customer?$filter=position('jr', Name) gt 0

And it's worth to remember that having TMS Aurelius working behind the scenes, all those queries will work the same way regardless of the database your are using at the server side, be it MS SQL Server, MySQL, Oracle, or any supported database you want. Best part is that it's not going to stop here, stay tuned for future releases that will bring even more querying features!


Wagner Landgraf

This blog post has not received any comments yet. Add a comment.

Sunday, June 07, 2015

Weekend fun with Raspberry Pi 2 and TMS Cloud Pack

Thinking to myself, why go through the hassle of sacrificing a desktop computer or fiddle around with VMs to test something on a Linux machine when I have here several 85mmx56mm Raspberry Pi boards laying around capable of amazing things. For my experiments, I wanted to have an ownCloud available and first thing to do was getting an ownCloud up and running on the Raspberry Pi 2, which turned out to be a piece of cake. To do this, follow these instructions:

Step 1: getting Apache up and running

If Apache is already setup on your device, skip this step, otherwise, from the command line, execute:

$ sudo apt-get install apache2

The Raspberry Pi 2 LED flashes for a short while and when completed, verify it is working by opening a browser on a machine in the network and navigate to the IP address of the Raspberry Pi 2 like When install was successful, you'll be greeted with an "It works!" page.

Step 2: install PHP and tools

In case you had Apache already configured with PHP 5, you can also skip this step.
To install, execute following commands:

$ sudo apt-get install php5
$ sudo apt-get install php5-gd
$ sudo apt-get install sqlite
$ sudo apt-get install php5-sqlite
$ sudo apt-get install php5-curl

After some more LED flickering, these steps will also be executed and the Apache environment with PHP 5 is ready.

Step 3: install ownCloud

To install ownCloud, start by downloading the latest distribution. At this time, this is v8.0.3 and is downloaded with:

$ sudo wget

Next step is to unpack the ownCloud distribution and install it under Apache.

$ sudo mv owncloud-8.0.3.tar.bz2 /var/www
$ cd /var/www
$ sudo bunzip2 owncloud-8.0.3.tar.bz2
$ sudo tar xf owncloud-8.0.3.tar

Step 4: setting up ownCloud

To finalize, the data folder for ownCloud must be created and an admin account added.
The data folder is created with following steps:

$ sudo mkdir /var/www/owncloud/data
$ sudo chown www-data:www-data /var/www/owncloud/data
$ sudo chmod 750 /var/www/owncloud/data

At this time it is more convenient to continue the setup from a browser. Either start the graphical shell on the Raspberry Pi 2 or connect from a browser on an external machine and navigate to http://localhost/owncloud or from external machine
The first screen that appears is to create an admin account, so add the credentials for an admin account on this page. With this account added, owncloud is up and running and ready for use.

Step 5: Connecting from Delphi to ownCloud

Now Delphi kicks in and with a little help from the TMS Cloud Pack, let's start using ownCloud from a Delphi app.

Start your IDE, make sure TMS Cloud Pack is installed and drop the component TAdvCalDAV on the form. Configure the TAdvCalDAV component to access your ownCloud. Verify the ownCloud primary CalDAV address by opening the calendar app within ownCloud via: and in the bottom left corner, click on settings where this primary address is shown. By default, this should be:

So, now we can configure the TAdvCalDAV component to connect to ownCloud on Raspberry Pi 2:

  AdvCalDav1.URL := '';
  AdvCalDav1.Username := 'tms';
  AdvCalDav1.Password := 'tmsrocks!';
  AdvCalDav1.Active := true;

After a successful connect, the calendars and their events available on ownCloud can be retrieved, here by filling the info in a listview:

  i: integer;
  cdi: TCalDavItem;
  li: TListItem;
  // get events
  for i := 0 to AdvCalDav1.Items.Count - 1 do
    cdi := AdvCalDav1.Items[i];

    if cdi.vCalendar.vEvents.Count > 0 then
      li := ListView1.Items.Add;
      li.Caption := cdi.vCalendar.vEvents[0].Summary;
      li.SubItems.Add(FormatDateTime('dd/mm/yyyy hh:nn',cdi.vCalendar.vEvents[0].DTStart));
      li.SubItems.Add(FormatDateTime('dd/mm/yyyy hh:nn',cdi.vCalendar.vEvents[0].DTEnd));
      li.Data := cdi;     

Adding a new calendar item is equally easy:

  cdi: TCalDavItem;
  li: TListItem;
  // set the calendar for the event
  cdi := AdvCalDav1.Items.Insert('Personal');  // add item to the "Personal" calendar
  cdi.vCalendar.vEvents[0].Summary := 'Schloss Dyck Classic Days';
  cdi.vCalendar.vEvents[0].Location := 'Jüchen, Deutschland';
  cdi.vCalendar.vEvents[0].Description.Text := 'Automobile Kulturgeschichte auf der Museums-Insel';
  cdi.vCalendar.vEvents[0].DTStart := EncodeDate(2015,7,31);
  cdi.vCalendar.vEvents[0].DTEnd := EncodeDate(2015,8;2);

or modifying an existing item

  cdi: TCalDavItem;
  li: TListItem;
  cdi := ListView1.Selected.Data;
  cdi.vCalendar.vEvents[0].Summary := 'Schloss Dyck Classic Days 2015';

Similar to accessing the calendars of ownCloud, you can also access the contacts with the TAdvCardDAV component in a very similar way. And this rounded up my little weekend fun experiment. With so much ubiquitous computing power around and wonderful technology, aren't we living in very exciting times?


Bruno Fierens

This blog post has received 2 comments. Add a comment.

Previous  |  Next  |  Index

Copyright © 1995 - 2015 TMS Software v4.0