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


<< >>
February 2016

Thursday, January 21, 2016

Introducing FNC and TTMSFNCChart

As we have been developing UI VCL framework components since 1995 and FireMonkey framework components since 2011, we have recently been doing extensive research on approaches to create visual UI components that would simultanously support the VCL framework and the FireMonkey framework. As a result of this research, we came to the conclusion that the approach for VCL and FMX can also be easily applied to LCL, the component framework that comes with Lazarus.

Doing so offers a number of advantages both for users of the components and the developers of the components. With respect to using the components, the user can seemingly exchange code between a VCL project and an FMX project as the interface and class name of the component is 100% identical. When porting from VCL to FMX or vice versa all code can be shared as-is. Just like you'd write the code in VCL Edit.Text := 'Hello world', you can in exactly the same way do this with a FireMonkey TEdit or LCL TEdit. As with the result of this approach, the UI components also become usable with the LCL framework in Lazarus, this means that writing Pascal based GUI apps with these components also becomes possible for additional operating systems supported by Lazarus/FPC, i.e. Linux and its variants like Raspbian. Also for the development of the components, there are a number of advantages. With a sufficiently abstract layer in place, the component developer can focus on the component UI look & feel and behavior rather than with the particuliarities of each underlying framework. Support and maintance for highly complex components means managing a single code base as opposed to maintaining 3 code bases. This leads to faster development and support and ultimately to more stable code accross 3 frameworks.

For the result achieved, we came up with the name FNC components, which stands for Framework Neutral Components. As a proof of concept, we have now released our first FNC component TTMSFNCChart that supports a mind boggling array of frameworks and operating systems: VCL Win32/Win64 from Windows XP to Windows 10, FMX Win32/Win64, MacOS-X, iOS, Android, LCL Win32/Win64, Mac OS-X, iOS, Android, numerous Linux variants including Raspbian. Oh, and there is an extra benefit, the component is not only usable from Delphi or FreePascal but also from C++Builder. The feature set of the TTMSFNCChart is more or less identical to our FMX chart that includes line,bar, XY-line, XY-scatter, area, stacked bar, stacked area, digital line, pie, spider and donut charts with highly customizable legends, X-axis, Y-axis etc...

You can see the TTMSFNCChart initialized with 100% identical code on a couple of operating systems:

  i,j: integer;
  rng: array[0..2] of integer;
  val: array[1..12] of integer = (15,23,10,5,3,14,33,11,8,19,9,22);
  Caption := 'TMS FNC Chart Demo';

  TMSFNCChart1.Width := 600;
  TMSFNCChart1.Height := 500;


  TMSFNCChart1.Title.Text := 'TMS FNC Chart : sales/month';
  TMSFNCChart1.Title.Font.Name := 'Helvetica';
  TMSFNCChart1.Title.Font.Style := [TFontStyle.fsBold];
  TMSFNCChart1.Title.Font.Size := 14;
  TMSFNCChart1.Title.Font.Color := gcBlue;

  TMSFNCChart1.Series[0].ChartType := ctLine;
  TMSFNCChart1.Series[1].ChartType := ctArea;
  TMSFNCChart1.Series[2].ChartType := ctBar;

  for j := 0 to 2 do
    TMSFNCChart1.Series[j].AutoXRange := arCommon;
    TMSFNCChart1.Series[j].Mode := smStatistical;
    TMSFNCChart1.Series[j].XValues.Angle := -90;
    TMSFNCChart1.Series[j].XValues.Title.Text := 'Months';
    TMSFNCChart1.Series[j].YValues.Title.Text := 'Units';

  TMSFNCChart1.Legend.Font.Size := 14;
  TMSFNCChart1.Series[0].LegendText := 'Retail';
  TMSFNCChart1.Series[1].LegendText := 'Consumer';
  TMSFNCChart1.Series[2].LegendText := 'B2B';
  TMSFNCChart1.Series[0].Markers.Shape := msSquare;
  TMSFNCChart1.Series[2].Markers.Visible := false;

  rng[0] := 70;
  rng[1] := 10;
  rng[2] := 40;

  for i := 1 to 12 do
    for j := 0 to 2 do
      TMSFNCChart1.Series[j].AddPoint(rng[j]+val[i], FormatSettings.LongMonthNames[i]);

The only difference in the project are references to units. For VCL, the unit namespaces are VCL.TMSFNC*, for FMX it is FMX.TMSFNC* and for LCL it is LCLTMSFNC* (as sadly FreePascal doesn't support a dot in the unit names)

Below are a number of screenshots of the chart running in a myriad of operating systems with exactly the same code:

TTMSFNCChart on iOS with FMX framework

TTMSFNCChart on Mac OS-X with FMX framework

TTMSFNCChart on Raspbian with LCL framework

TTMSFNCChart on Ubuntu with LCL framework

TTMSFNCChart on Windows with VCL framework

With this first proof of concept product ready now, we are eager to learn about your interest in this type of components and what other UI components you want to see us developing for FNC. We are curious to see your results bringing Pascal code bases to an amazing and vast number of operating systems and devices.


Bruno Fierens

This blog post has received 20 comments.

1. Thursday, January 21, 2016 at 4:16:22 PM

Hi Bruno,

wow!! This is a great news

For me this is the future. In this new "era" the device should no longer be the "problem".

write everywhere (or almost ;-))

Claudio Piffer

2. Thursday, January 21, 2016 at 5:11:00 PM

That sounds pretty cool.
Lazarus is still lacking of good data grid. With a good data grid, I think lazarus has all componets which are needed to develop modern business applications.

* Reporting (FastReport)
* Database Connectiions (ZeosDB, DevArt)
* Client/Server Framework (mORMot, RemObejcts DataAbstract)
* Charts (TMS)
* Grids (???)


3. Thursday, January 21, 2016 at 5:19:30 PM

Wow, great!
I really like it!

Stefano Monterisi

4. Thursday, January 21, 2016 at 5:20:35 PM

This is great, I''ve been hoping for TMS support for linux/rapberry pi forever on the FPC. This is a great step!

Mike Sum.

5. Thursday, January 21, 2016 at 6:17:07 PM

Stay tuned for more!

Bruno Fierens

6. Thursday, January 21, 2016 at 6:32:01 PM

The uncertain future of Delphi on one side, a broader OS support (with Lazarus) on the other side, make this announcement a very exiting!

Currently I use DevExpress, if/when a roughly equivalent set of NF components will be available I will seriously consider the switch.

Guido Aspeszani

7. Thursday, January 21, 2016 at 7:39:17 PM

This seems very interesting :)


8. Thursday, January 21, 2016 at 7:53:35 PM

If the base framework were open source this could be very interesting.

Leonardo Herrera

9. Thursday, January 21, 2016 at 8:57:22 PM

FreePascal already supports a dot in the unit name.
Check out 3.0.0 version.

Marcos Douglas

10. Thursday, January 21, 2016 at 9:54:59 PM

Interesting. But we did not want to set the requirement to be 3.0 yet.

Bruno Fierens

11. Friday, January 22, 2016 at 1:29:57 AM

Certainly an interesting idea and I''d support it. But it would also add another level of abstraction on top of existing frameworks and dependence on other frameworks that could be risky and costly to maintain. Just think about Firemonkey''s performance and end-user acceptance issues.

I believe that you would enjoy better sales emulating VCL on other platforms so existing applications would more easily port from Windows VCL to Mac OS X, iOS and Android. The mCL and iCL products suggest you might already be closer to such a goal.

Navid Madani

12. Friday, January 22, 2016 at 10:14:25 AM

Wow ! I''m definitely staying tuned for more !

Carre Stephane

13. Friday, January 22, 2016 at 10:28:21 AM

As ever TMS is doing their ultimate. This is THE development for the future. We will test it of course and keep all of our readers informed, I think this is the step to the next generation of software developmentā€¦GREAT and INSPIRING!

Detlef Overbeek

14. Friday, January 22, 2016 at 2:00:56 PM

This is great! I think the adoption rate for freepascal would explode if there was a decent cross platform set of gui controls

Margerum Michael

15. Friday, January 22, 2016 at 2:25:13 PM

Too bad there is still no real way to pass an array of data.
Don''t get it why. Since the array is already assigned and filled, passing the reference and the number of points should be enough, knowing the data type, to use it immediately without the need for a GetPoint call crawling everything down.

GetPoint could be nice when needing to pre-process the data though.


16. Tuesday, January 26, 2016 at 11:10:08 AM

The next update will have a method: AddPointArray()

Bruno Fierens

17. Wednesday, January 27, 2016 at 2:46:52 AM

I''m getting pretty exasperated with FMX on Windows and have been looking at moving back to the VCL. One thing I need is a good virtual grid and ironically the TMS FMX grid is the best I''ve found so far - any near term plans for an FNC grid like the FMX one?


Robert Devine

18. Friday, January 29, 2016 at 8:55:12 PM

LCL have modern architecture and it will control future market of Delphi Like Languages,

this would be an initial step and TMS would continue this approach .

availability of TMS component can made lazarus a serious development tool.

Ryan Samiee

19. Saturday, January 30, 2016 at 8:19:40 PM

waw , really very interesting , but Bruno may i ask you a question :

will this be a framework for other ( any ) component developing or only for the TMS components ?

as i''m a delphi component developer i''m really interested in this framework if the above question is right .

many thanks


20. Sunday, January 31, 2016 at 9:05:33 AM

We had not thought (yet) about making this a sort of open framework, but this is a good idea and worth exploring.

Bruno Fierens

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, January 07, 2016

TMS hands-on training day in Meerbusch, near Dusseldorf, Germany

We're pleased to inform that TMS software organizes a new training day on Friday March 11th. Our entire team will be present at the TMS Day in NRW Germany. Get the in-depth information directly from the principal architects of TMS products!

Tentative program

Please also send in the specific topics you want to see covered on this training day so we can finalize this tentative program and fulfill your needs in the best possible way. We 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 code or application. For a maximum interactivity, the number of seats will be limited to 30 persons.

Registrations until February 15 - number of seats limited to 30 persons!

The cost of the TMS training day is only 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. Also, a 20% discount will be offered for NEW licenses for all attendees!


  • Gut Dyckhof, Am Dyckhof 3, 40667 Meerbusch-Büderich - NRW, Germany
  • Very close to exit Meerbusch of the A52 highway
  • Free parking
  • Facilities for hotel rooms at the event are available for international attendees


Nancy Lescouhier

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, December 31, 2015

Our little New-Year gift for Pascal developers

On this last day of the year, we'd like to introduce a first version of a little New Year's gift for you, Pascal developers. If you are, like us, excited about Internet of Things, embedded software development, DIY projects, controlling electronics from your code, ... we have for you a first version of our new free & open-source bundle of hardware access components for Raspberry Pi. You can download full source code from here

This is a first small step into making interfacing with all kinds of external electronic devices like sensors, displays, step motor, input devices etc... as easy as setting a few properties or calling a few methods of a class. If you would for example like to measure some analog voltage and display the result on a small LCD display, this becomes as simple as:
  v: integer;
  s: string;
v := TMSLCLAdaADC12B.ReadChannel(0);
s := 'Value: ' + IntToStr(v) + 'V';

At this moment we have components for following Raspberry Pi breakouts and more are coming...

Adafruit 4 digit 7 segment display

Adafruit monochrome 128X32 OLED graphic display

Adafruit 12bit DAC

Adafruit 12bit 4 channel ADC

Adafruit RGB 16x2 LCD + keypad

Adafruit barometric pressure/temperature sensor

We of course also welcome you to contribute to this open-source package. Contact us with your suggestions, feedback, contributions.


Bruno Fierens

This blog post has received 4 comments.

1. Thursday, December 31, 2015 at 2:57:50 PM

Cool Bruno!

Ii assume the code runs on the RasPi? In other words, is it written for freepascal udner noobs?

Han Limburg

2. Friday, January 01, 2016 at 6:05:15 AM

Is this component set for Delphi or for FPC?

Yogi Yang

3. Friday, January 01, 2016 at 9:52:50 AM

It is for FPC and works with Raspbian on Raspberry Pi 2

Bruno Fierens

4. Thursday, January 21, 2016 at 8:01:54 PM

Very good for the Pascal community.
It urges me to give RaspberryPi a try!


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.

Tuesday, December 15, 2015

This was the month November and December at

Just like September, November & December were again very busy months here at A small overview:

TMS Logging

In the beginning of this month we released TMS Logging v1.0.0.0, a new logging framework that makes use of log levels to output values/objects. We developed TMS Logging to have a cross-platform solution that is flexible, compact and offers informative logs with a minimum amount of log code. TMS Logging is available for XE7 update 1 or newer (due to using the newest Delphi language features extensively) releases and supports VCL Win32/Win64 apps and FMX Win32/Win64/Mac OS-X/iOS/Android apps.

TMS LCL Cloud Pack

Begin November, our TMS Cloud Studio has been extended with TMS LCL Cloud Pack v1.0.0.0 . TMS LCL Cloud Pack offers easy access from Windows, Raspberry Pi, Mac OS-X, Linux applications to cloud services like Amazon, Facebook, Flickr, FourSquare, Picasa, Google, LinkedIn, Twitter,Wunderground weather, YouTube, ... . It offers access to all popular cloud storage services like OneDrive, Box, DropBox, calendering services, push notification services and more...

Watch our twitter account or facebook page for announcements about new developments on LCL components soon!

TMS Hands-on training day

The second edition of the TMS hands-on training day end November was again very successful. It was not only interesting for the attendees, but also for our team! We could talk to our customers face to face, hear stories about their experiences with Delphi, and could see what fantastic applications were developed with TMS components. We also got interesting suggestions on new features and new components some of which already found their way into product releases and others we will definitely work on in 2016. After this successful edition, we can say with certainty we'll be planning more events on TMS tools next year!


We also acquired, a small company focusing on offering zero-client solutions to control a personal computer.

myWebMachine offers great & innovative technology to access your PC literally from anywhere, anytime: a Windows PC can be remotely controlled from another Windows PC, Mac OS-X or Linux computer or from devices such as iPad, iPhone, Android tablet, Microsoft Surface, Smart TV without the need to install any software on the client machine. Using the standard installed browser is sufficient.

If you wish to try out myWebMachine yourself, a free fully functional trial version is available at

TMS iCL v2.8.0.0

Our set of native iOS controls was also extended and improved. There were new capabilities and improvements in TTMSFMXNativeUITableView and a new control was added: TTMSFMXNativeAVPlayerViewController. This new control surfaces the iOS capability to display streaming video content along with system-supplied playback controls. It supports wireless movie playback to AirPlay-enabled hardware such as Apple TV and also the new iOS 9 picture-in-picture view.

TMS Component Pack updates

Our flagship bundle of productivity feature-packed VCL controls for Windows application development got 4! updates in the past 2 months. Our team is day-in, day-out listening to your requests & feedback and added no less than 29 new features and numerous smaller improvements and fixes over the last 4 free updates. And yes, also documentation was extended and samples were improved. Check out the latest version of TMS Component Pack and stay tuned for more new capabilities to be added in upcoming versions.

TMS FMX Chart v1.5.0.0

And finally, this week we released a major update of our cross-platform chart component. In TMS Charts for FireMonkey v1.5.0.0 we've added ctBand support.

Knowledge base alert

We would also like to say a small word about our monthly Knowledge base alert we started with this year. From the positive feedback we received from several subscribers, and for which we want to thank you, we can conclude many of our users appreciated this technical knowledge base alert. We will keep gathering these useful articles about our products and provide them to you via our newsletter. You can always consult these tips at: our via
If you are not yet subscribed, you can add your email address here.

Best wishes for a happy & prosperous New Year from the TMS team!

We can conclude we ended 2015 with some new exciting developments. We're already brainstorming on several things for 2016 and we look forward to be at your service in 2016!


Nancy Lescouhier

This blog post has received 1 comment.

1. Thursday, December 17, 2015 at 9:22:09 PM

Definitely interested in the dates for any future "hands-on training days".

Hoover Rick

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 - 2016 TMS Software v4.0