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


<< >>
April 2014

Monday, April 14, 2014

The story of a teenage scripter

Last week I was just browsing the TMS site, looking at the version numbers of existing products, when I saw TMS Scripter current version: 6.3. I see those numbers often and I’m used to them, but this time, I was a little bit shocked. Just like a father whose son is born and, in the blink of an eye, watches this son going to college in his eighteen, I was astonished to see how far TMS Scripter went, and for so long. It’s true that my oldest son is just about to turn 5 years-old, but for that my eyes didn’t even have to blink – they were wide open – so I can imagine how it might be for a father of a grown-up son. My second son is only 12 days old, and got me so worried last week to the point I went to the gym with a different tennis shoe in each foot and only noticed it when I came back home. I’m trying not to blink an eye. But I digress.

Thing is TMS Scripter is already a teenager. I have to face it. First version was released in 2001, but it was being already used in internal projects for at least three years. It’s interesting to see old family pictures, and the following one shows version 1.5 from November, 2001, when it was still called TatPascalScripter and had just a new featured added: COM interfaces support.

Since then, it had fourty-six – fourty-six! – releases, which added the following main features (in chronological order) that transformed TMS Scripter over the years:

  • Support for COM Interfaces
  • Basic Syntax
  • Delphi classes import tool
  • Debugger
  • Syntax highlight memo with breakpoints, etc.
  • Events support
  • Code completion
  • WebScripter
  • Watches
  • Thread support
  • Script-based libraries
  • DLL importing from script
  • Source explorer
  • Script-based forms
  • Complete IDE with form designer and object inspector
  • Automatic class import using new RTTI
  • Parameter hints
  • Script-based classes
  • Undo/Redo in form designer
  • Windows 64-bit support
  • Firemonkey Forms
  • Mac OS support

Besides, of course, constant language improvements, introduced over the releases, and support to all the new Delphi versions released, until the latest one, XE6, with no exception.

Over all those years and versions, full backward compatibility was kept, regression bugs were minimized and fixed, and I believe most of TMS Scripter users had a safe and peaceful life like, with full support and compatibility – including the famous migration from ANSI to UNICODE.

But what brings more satisfaction is to see the different way TMS Scripter affects many users. Yes, TMS customers are overall satisfied, enjoy the high number of features in our products, and appreciate the support we provide. But TMS Scripter is, of the products I manage, the one that receives more “emotional” comments. Users mention to be surprised every day with it, and comment how it constantly opens new doors in their applications. I believe one of the reasons for that is the fact that TMS Scripter is an “open” product, with so many different ways to use and applications, that it often requires (and allows) a great amount of creativity from its users, making them a kind of “artist” of their own software.

Yes, TMS Scripter is already a teenager. But more exciting things will come and its story doesn’t end here.


Wagner Landgraf

This blog post has not received any comments yet.

Add a new comment:
  You will receive a confirmation mail with a link to validate your comment, so please use a valid email address.
Change Image
Fill in the characters from the image above:

All fields are required.

Monday, April 07, 2014

Hello, TMS Sparkle

TMS Sparkle is a brand new product released by TMS Software. It is a Delphi framework for network, Internet programming.

As stated in the online documentation, TMS Sparkle is the core building block for several other TMS products and technologies, such as upcoming TMS RemoteDB and TMS XData. Such products needed to be built from scratch, and to rely on a robust framework for which TMS could have 100% control and also responsibility. For such products to work flawlessly, we needed to be sure to build such products in a framework that must be properly tested, and have fast response in performance improvement and bug fixing.

It is trustworthy, fresh, modern, cross-platform (Windows, Mac, iOS, Android) and most of it, as much platform native as it can be.

TMS Sparkle is part of TMS Business Subscription, which contains many other products, like TMS Aurelius and TMS Scripter, and will also receive the mentioned upcoming products TMS RemoteDB and TMS XData.

For detailed information you can refer to TMS Sparkle product page and online documentation. In the meanwhile, to illustrate its usage, here is the full source code for a minimal Http Server using TMS Sparkle:

program HelloWorldServer;



  THelloWorldModule = class(THttpServerModule)
    public procedure ProcessRequest(const C: THttpServerContext); override;

procedure THelloWorldModule.ProcessRequest(const C: THttpServerContext);
  C.Response.StatusCode := 200;
  C.Response.ContentType := 'text/plain';
  C.Response.Close(TEncoding.UTF8.GetBytes('Hello, World!'));

  ServerUrl = 'http://localhost:2001/tms/business/hello';
  Server: THttpSysServer;
  Server := THttpSysServer.Create;
    WriteLn('Hello World Server started at ' + ServerUrl);
    WriteLn('Press Enter to stop');


Wagner Landgraf

This blog post has not received any comments yet.

Add a new comment:
  You will receive a confirmation mail with a link to validate your comment, so please use a valid email address.
Change Image
Fill in the characters from the image above:

All fields are required.

Thursday, February 06, 2014

Get device independent, put your settings in the iCloud

On the road, we carry a smartphone, in a couch we grab the tablet and in the office we sit behind the desk and use a desktop computer. In all scenarios though, we want to use applications that give us access to the same data and functions. Therefore, it is also logical that when we change our parameters for access to this data and functions via the desktop machine application, these same parameters and settings will be reflected (automatically) when we use the smartphone or tablet specific application and vice versa. In the Apple world, the answer to this scenario is persisting our parameters / settings on the iCloud.

As a Delphi developer, we typically like it when we can persist this information with a minimum amount of code so we can focus on the business logic instead of all technical complexities of using the iCloud. Delivering this promise, we've now released two new non-visual components: TTMSFMXNativeiCloud and TTMSFMXNativeMaciCloud. With these components, putting key/value pairs on the iCloud and retrieving them becomes as simple as using a method
 procedure AddKey(AKeyName: String; AKeyValue: TValue);
to create a key/value pair and using the property:
 property KeyValues[AKeyName: String]: TValue
to get and set the value of the key.

So, when in one application, the user would change a setting, this can be done with:
  FName: strring;

FName := 'TMS';
TMSFMXNativeiCloud.KeyValues['MyAmount'] := 1234;
TMSFMXNativeiCloud.KeyValues['MyName'] := FName;
Thanks to the magic of the iCloud and these non-visual components, the key/value pairs will now automagically be synchronised between applications on different devices coupled to the same iCloud account. If the app wants to react immediately to iCloud pushed value changes, the event TTMSFMXNativeiCloud.OnKeyUpdate is triggered and can be handled like:
procedure TMSFMXNativeiCloud.KeyUpdate(Sender: TObject; AKeyName: String; APreviousValue, ACurrentValue: TValue);
   if (AKeyName = 'MyName') then
     FName := ACurrentValue;
Note that the value is of the type TValue and supports strings, booleans, integers, double and a TMemoryStream. Of course, the component offers several more options like deleting a key/value pair, programmatically forcing a synchronisation of the values on the iCloud, receiving events when iCloud pushed updates to values etc...

TTMSFMXNativeiCloud is available now in the newest TMS iCL update and TTMSFMXNativeMaciCloud is available now in the newest TMS mCL. A FireMonkey iOS demo in TMS iCL and a FireMonkey Mac OS-X demo in TMS mCL demonstrate this concept by having a customizable set of key/value pairs shared via the iCloud between these applications as shown in the screenshot above.


Bruno Fierens

This blog post has not received any comments yet.

Add a new comment:
  You will receive a confirmation mail with a link to validate your comment, so please use a valid email address.
Change Image
Fill in the characters from the image above:

All fields are required.

Sunday, January 05, 2014

The year 2013 at TMS

When you go home in the evening after working hard all day, do you also often have the feeling you have achieved much less than you had expected or hoped for that day? If so, join the club.
But now that I sit back at the start of a new year and retrospectively look at what 2013 brought for TMS, I hope you'll agree with me that we nevertheless achieved quite a lot. Actually, 2013 was quite a rollercoaster.

To start with, our VCL development continued relentlessly.

TMS Component Pack
We have seen 4 major releases, going from v6.7.0.0 to v7.1.6.0. with support for RAD Studio XE4 and XE5 added but also with 7 new components, 206 new features and numerous improvements added. For 2014, new components & new features are already in development. Be in touch with our development team to express your desires & comments so we can integrate these also in future updates.

TMS Aurelius
Our flagship ORM for Delphi, TMS Aurelius continued to be highly appreciated by customers and several exciting capabilities were added. There is now integrated database schema update and validation. There is iOS support with full native access to SQLite. There is the new TExpression/TLinq for stronger querying capabilities. TMS Aurelius is also being readied for seamless integration with TMS XData that will be released in 2014.

TMS Cloud Pack
This was another rapidly growing product in 2013. TMS Cloud Pack now comprises seamless access to the worlds most popular cloud services like Twitter, Facebook, LinkedIn, FourSquare, iCloud Calendar, iCloud Contacts, Google Calendar, Google Contacts, Live Calendar, Live Contacts, Flickr, Picasa, Instagram, Google Drive, SkyDrive, DropBox, Box.NET and more... But this is only the start. Watch 2014 for some exciting new capabilities to be added.

GEO mapping components TWebGMaps and TWebOSMaps
In 2013, we extended our component for Google Maps, TWebGMaps with directions, directionlist, waypoints and also introduced a new component TWebOSMaps that offers similar functionality but using Open Street Maps. We also made our GEO mapping components available for web application development with an IntraWeb version and for mobile development.

TMS Advanced Chart
This year also saw some major new features added in TMS Advanced Charts. 3D pie charts and the funnel chart type were added along with several smaller enhancements that make the every day programming with TMS charts easier.

With the releases of RAD Studio XE4 and XE5 this year, bringing us cross platform development targetting iOS and Android, there was without a doubt also much activity at TMS in the area of FireMonkey development!

TMS Flexcel
The strongest VCL solution on the market for native XLS/XLSX file manipulation with included PDF & HTML report generation on Windows, TMS Flexcel now makes its power also available for Mac OS-X, iOS and Android. No matter what operating system you target, TMS Flexcel offers a versatile, feature rich and high performance solution for dealing with XLS, XLSX, XLSM files.

TMS Pack for FireMonkey
With RAD Studio XE4 and XE5 bringing native iOS and Android support, it is evident that our team had its hands full with ensuring TMS Pack for FireMonkey components work flawlessly on all four platforms and on top of that we added new components and numerous new features. There is a new syntax highlighting memo in the TMS Pack for FireMoney, the included feature-rich grid was extended with new functions and improvements, a VCL listview interface compatible wrapper was added, live bindings support was added in the TTMSFMXTileList and support for it was improved in several components.

TMS Cloud Pack for FireMonkey
TMS Cloud Pack for FireMonkey is a new product that saw the light in 2013. Developers can now easily integrate the consumption of popular cloud services from Delphi iOS or Android applications via ready to use Delphi classes that wrap all the functionality. TMS Cloud Pack for FireMonkey development is closely tied to TMS Cloud Pack for VCL development, so expect new features and improvements to become available in both.

In 2013, we also saw the creation of a new category of components: the 100% native iOS and Mac OS-X components. For those instances where it is really needed to get the maximum performance and maximum UI look & feel consistence out of your applications, we created TMS iCL targetting iOS and TMS mCL targetting Mac OS-X. TMS iCL and TMS mCL bring more than just thin Delphi class wrappers around iOS or Mac OS-X APIs. Our focus is on easy to use, feature-rich Delphi components designed with RAD in mind.

This suite of components targets iOS. It contains nearly all native iOS UI components like buttons, edit, switch, pickers etc... but also rich Delphi classes giving access to complex iOS controls such as the collectionview, rich text editor, tableview, mapview, toolbar etc... For 2014, we have several new components in research and development that go far beyond simple iOS API wrapping.

Similar to TMS iCL, TMS mCL targets Mac OS-X. This component set is designed with the same philosophy as TMS iCL. Also here, there is a rich text editor, a tableview, toolbar, PDF viewer, web browser and much more.

Not only for Delphi developers we added a huge array of components for cross-platform / mobile application development, also in the area of .NET, TMS Flexcel for .NET entered in the mobile area with new support for Xamarin. Via Xamarin, TMS Flexcel .NET now also targets iOS and Android!

In the area of web development, the focus was on new products like TMS IntraWeb WebGMaps, TMS IntraWeb WebOSMaps, TMS IntraWeb Cloud Pack as well as continuously improving our products for cross browser compatibility and adding support for the latest versions of IntraWeb 12.2 and IntraWeb 14.0. For this year, we have some exciting new developments underway for your web development.

Of course, this list is just a summary of some major component developments that happened here in 2013 at TMS. It would make this article far too long to list everything in detail. Check the version history tab on each product page to have a look at what was recently added! Other than component development, in 2013 we had several other major events. One such event was the first TMS developer day we organized with the support of the Be-Delphi organisation in April. From the feeedback of attendees, it was clear this day was very much appreciated and we plan a new TMS developer day this year but most likely at a different location. The second major event this year was the release of our completely restyled website. And finally, we have also introduced feature-request voting this year. With this tool, we cannot only capture what you would like to see us develop but also measure interest and steer our development to what you need most. Since its introduction this year, we have already handled more than 20 such requests.

So, we hope you'll agree with us that 2013 was quite an exciting year. Our batteries are recharged to bring more excitement for 2014. Our team is ready to listen and respond to all your inputs, feedback, comments, questions and suggestions to create together great software development solutions.


Bruno Fierens

This blog post has received 3 comments.

1. Wednesday, January 08, 2014 at 10:29:26 PM

RE: Cloud pack
What I really need is the YouTube API for Delphi.

A Satisfied TMS Studio subscriber


2. Thursday, January 09, 2014 at 3:07:37 AM

Thanks for your feedback.
Youtube is on our rader.
It is already added for voting in the feature request list:
With sufficient interest, this is a development we''ll definitely do.

Bruno Fierens

3. Thursday, January 09, 2014 at 12:28:14 PM

10 Days till the great Moment :)

Happy new year TMS!

Ryan Samiee

Add a new comment:
  You will receive a confirmation mail with a link to validate your comment, so please use a valid email address.
Change Image
Fill in the characters from the image above:

All fields are required.

Friday, December 20, 2013

Two lines of code to add QR, UPC, EAN code scanning in iOS Delphi applications

For an internal project, we looked at integrating QR code scanning in an iOS application. As we didn't feel like reinventing the wheel and deal with the complexities of deciphering a QR code, we searched for existing code and after trying out several solutions, found ZBar to be one of the most solid libraries. The project is at :

After doing this evaluation in XCode with ObjectiveC, the next duty was to find out how we could use an ObjectiveC library from a Delphi FireMonkey project. There are several important details to pay attention to when doing this, but finally this also proved to work and in the typical Delphi RAD philosophy, we decided to create a wrapper Delphi component for this. With this wrapper component, scanning a QR, UPC or EAN code from Delphi is as simple as two lines of code:

procedure TForm1136.Button1Click(Sender: TObject);
  // line1: activate the code scanner. This shows the camera that should be aimed at the QR or UPC code

procedure TForm1136.TMSFMXZBarReader1GetResult(Sender: TObject;
  AResult: string);
  //line 2: the OnGetResult event is triggered when the code was retrieved and this returns it as a text
  ListBox1.Items.Insert(0, AResult);
You can download the sample project and the package with full source code to install the TTMSFMXZBarReader component here:
Open the package file TMSFMXZBarReaderPkgDXE5.dproj from Delphi XE5 and compile & install this package. This will add the component TTMSFMXZBarReader on the tool palette. Then you can drop this component in an iOS Delphi appplication and start using it in 1,2, 3 ...



Bruno Fierens

This blog post has received 13 comments.

1. Monday, December 30, 2013 at 5:59:47 AM

This works brilliantly, it was up and running on an iPhone 5s in minutes! So much better than having to install zing and call an intenet. Would it be too much to ask to extend it to Android?

I am sure like me others would not mind paying for this. I have seen a number of requests.

Regards Mike

Price Michael

2. Friday, January 03, 2014 at 4:49:44 AM

Nice work,

If you can extend this to Android I would pay for this.

van Dijk Bart

3. Saturday, January 04, 2014 at 11:12:49 AM

Very nice. Works great!

Yes, we need an Android version. :)

Brian Long has a solution that works well but it''s not an elegant solution and there are lots of challenges to get it to work in an app. A component set would be much more productive.


Lawrence Robert

4. Tuesday, January 07, 2014 at 4:45:48 AM

great example !!

I tested the example on my Iphone 5 ... works fine but:

the camera is slow to make a focus .. it''s normal ?

I have touched the display, but does not focus the image.. why ?



5. Tuesday, January 07, 2014 at 2:17:06 PM

Our Delphi class is a wrapper around the ZBar scanner component you can find at:
Our wrapper component is not responsible for focus control. You might direct your question at the developers of the ZBar class itself.

Bruno Fierens

6. Thursday, January 16, 2014 at 1:40:45 PM


Are we persuading you to consider the Android version :)

Will be watching the webinar on programing devices next Wednesday. With your wrapper skills do you think this may be an area TMS could address

Regards Mike

Price Michael

7. Friday, January 17, 2014 at 5:19:22 AM

Correct, it is under investigation.

Bruno Fierens

8. Monday, January 20, 2014 at 2:20:26 PM

Android Version Please :-)


9. Sunday, February 02, 2014 at 10:20:32 PM

re android, check out

as maybe a starting point for an android component
(this uses zbar as well)

Hamilton Brian

10. Sunday, February 09, 2014 at 6:10:48 AM

>Android Version Please :-)

Your wish is grandet. ;-)

For the iOS part "my code" is using the TMS component, so this works for Android and iOS as well.

Thomas K

11. Tuesday, February 11, 2014 at 9:50:52 PM

works great Thomas, thanks !!

Hamilton Brian

12. Sunday, February 16, 2014 at 4:16:10 AM

Installed your component and compiled the example all went well (after I copied FMX.TKRBarCodeScanner.pas into the sample directory. but clicking the scan button crashes the phone.
I am testing on Galaxy S4, any suggestions.

Thanks Mike

Price Michael

13. Tuesday, February 18, 2014 at 3:23:08 AM

Found the problem the solution requires the installation of zxing as well. Was really after the same elegant solution Bruno had done for IOS

Price Michael

Add a new comment:
  You will receive a confirmation mail with a link to validate your comment, so please use a valid email address.
Change Image
Fill in the characters from the image above:

All fields are required.

Previous  |  Next  |  Index

Copyright © 1995 - 2014 TMS Software v4.0