RAD Studio 10.1 Berlin Update 2 – Anniversary Edition

RAD Studio 10.1 Berlin Update 2 – Anniversary Edition

RAD Studio, C++Builder and Delphi 10.1 Berlin Update 2 Anniversary Edition helps you to Code Faster and Reach Further. You still write your code once, but now you code faster and reach every store: Android, iOS, macOS and Windows 10. Not only does update 2 include many bug fixes, but it also includes new features, all in a non-breaking release.

[YoutubeButton url=’https://www.youtube.com/watch?v=J3HndPIZLII’]


Reach a wider audience with your software!

New in Berlin Update 2 Anniversary Edition is support for building Appx packages for distribution in the Windows 10 Store. Windows Desktop Bridge Deployment Support allows you to package new and existing desktop applications ready for the Windows 10 Store directly from your IDE using Microsoft’s Desktop Bridge. Target hundreds of millions of Windows 10 devices with your existing VCL or FMX code base. Same code, new customers!

With Microsoft Windows Store now alongside macOS, Android and iOS store support, you can now reach billions of users from a single cross-platform app codebase!

[YoutubeButton url=’https://www.youtube.com/watch?v=g7OsW1dy5mw&list=PLwUPJvR9mZHjHazV4JYGluheXdPSuT19R&index=4′]


Increase developer productivity

QuickEdits – Increase your productivity in the VCL designer with the ability to rapidly modify the name, caption, alignment, layout and color of a control, copy the component name, quickly layout a form from a template, connect images and image lists, and bind the control to a data source or data field.

10.1 Berlin Update 2 benefits from the many new productivity features added in recent releases, including large project support, code block highlighting and the market leading FireUI offering live preview of prototypes on different devices as you design.

[YoutubeButton url=’https://www.youtube.com/watch?v=uSesSuckqeg&list=PLwUPJvR9mZHjHazV4JYGluheXdPSuT19R&index=5′]

Modern Windows 10 User Experience

New VCL Controls in Update 2 – Improve application usability with two calendar components for Windows 10 that mimic WinRT UI controls while providing support for older versions of Windows.

New Windows 10 Styles – Modernize your application’s look-and-feel with three new Windows 10 styles added for FireMonkey and VCL in Update 2
[YoutubeButton url=’https://www.youtube.com/watch?v=sxsRqTJcmKo&list=PLwUPJvR9mZHjHazV4JYGluheXdPSuT19R&index=3′]

10.1 Berlin continues to be the fastest way to take full advantage of Windows 10. Support includes native WinRT/UWP components and APIs, Windows 10 VCL User Experience controls, and updated Windows 10 VCL and FMX support.

[YoutubeButton url=’https://www.youtube.com/watch?v=erZGyOh2Ric&list=PLwUPJvR9mZHjHazV4JYGluheXdPSuT19R&index=2′]

Read More

Read More

TMS online videos presented at CodeRage XI

TMS online videos presented at CodeRage XI

During CodeRage XI, the online event from Embarcadero, Bruno Fierens (founder TMS software and Embarcadero MVP), Wagner Landgraf (TMS Business product manager) & Roman Yankovsky (TMS FixInsight product manager and Embarcadero MVP) brought sessions covering our latest technologies FNC, myCloudData, Aurelius, FixInsight developed at TMS software.

If you missed one of these sessions, you can now watch them via our Youtube channel.

New video’s published at tmssoftwareTV:
Cross Framework UI Controls – by Bruno Fierens: This session explains the differences between the VCL and FMX framework that are relevant for custom user interface control development. Given these differences, an abstraction layer, FNC is presented that enables creating custom user interface controls starting from a single source code base that can be used for both VCL, FMX (and LCL) applications. In the last part of the session, several complex FNC UI controls that are in the TMS FNC UI Pack product are demonstrated that can be used in VCL, FMX, LCL applications and target this way Windows, iOS, Android, macOS and Linux.

Metadata assisted automatic DB form generation for cloud data – by Bruno Fierens: The myCloudData.net service offers easy to use structured cloud data storage. The foundation of the service is a REST API. For our Delphi users, we added several components to consume this service with an absolute minimum amount of effort.
The TAdvmyCloudData component enables using object oriented programming techniques for using the myCloudData.net service. With TAdvmyCloudDataDataSet and TAdvmyCloudDataDataConnection, controls can be bound directly to the data in the cloud, be it via DB-aware controls or livebindings. For the next level of automation: bound DB forms auto generated with the help of rich metadata, two components are available, TAdvmyCloudDataFormPanel and TAdvmyCloudDataFormBox.

TMS Aurelius Free Edition, an overview – by Wagner Landgraf: An overview of the well-regarded Aurelius ORM framework for Delphi, which now has a free edition for commercial use, available for Delphi 10.1 Berlin.

FixInsight: Finding Bugs with Static Code Analysis – by Roman Yankovsky: Roman Yankovsky shows you how to use FixInsight‘s static code analysis in Delphi to find bugs in your code before your customers do. Roman Yankovsky is an Embarcadero MVP and the author of FixInsight static analysis tool for Delphi.

Read More

Read More

Debug logging in FireMonkey – CodeRage XI Lightning Talks

During CodeRage XI I had a couple of Lightning Talks broadcast on a subject I’ve been intending to write up for quite a long time, but haven’t quite managed to achieve: how to emit debug log messages on the various FireMonkey platforms. I made a 10 minute video for Delphi and one for C++ looking at all the target platforms, Win32/Win64, OS X/macOS, Android and iOS, showing the logging options and then looking at how to view log output. Unfortunately I got a bit caught up in some work and didn’t publicise this ahead of the conference, so I think not many people were aware of them. If you want to see the short videos after the fact, the URLs will be here very soon when available on YouTube – I’ll update this post as and when: Debug Logging in Delphi FireMonkey Apps Debug Logging in C++ FireMonkey Apps You can look at the supporting (short) slideshows on SlideShare (ignore the funky bullet point symbols – something was awry in the slide template when I made the slides): Debug Logging in Delphi FireMonkey Apps Debug Logging in C++ FireMonkey Apps The simple sample projects are also available to download: Debug Logging in Delphi FireMonkey Apps samples Debug Logging in C++ FireMonkey Apps samples
Read More

CodeRage XI session: Using App Tethering to enable CodeSite for Tracing Mobile Apps

My CodeRage XI session on "Using App Tethering to enable CodeSite for Tracing Mobile Apps (Intermediate)" will be streamed in about 3 hours from now. Delphi App Tethering allows interaction between two applications that can exist on different devices (but must be connected on the same subnet or Bluetooth).
Read More

Introducing Sergey Gladkiy and TMS Analytics & Physics Pack

It's always a privilege and honour to be able to work with very smart people who are not only expert in Delphi but also expert in a specific domain. Earlier this year, Bernard Roussely and Marion Candau joined tmssoftware.com and focus so far on advanced cryptography algorithms with the highest security levels in TMS Cryptography Pack. More tools that will use this underlying strong technology are already in the pipeline. Around the same time, also Roman Yankovsky joined tmssoftware.com and the static code analysis tool TMS FixInsight is the result. With TMS FixInsight, you can bring your Delphi code to a higher quality & safer level with numerous code hints and suggestions it gives. Today, I'm proud to announce Sergey Gladkiy joins the TMS team for working on products with a strong mathematical background. The first result is the TMS Analytics & Physics Pack. This pack offers a set of (non-visual) platform independent classes to work with mathematical expressions and units of measurements. In TMS Analytics & Physics Pack, you can do evaluation of complex multiparameter mathematical expressions, including expressions with complex numbers. You can do physical measurement conversions of all kinds. But perhaps the most amazing part is symbolic derivative calculations. In this respect, TMS Analytics & Physics Pack brings a math wizard in the form of classes that can be used in VCL and FMX apps. You can discover the power of this library via the included demo but I wanted to share some examples of symbolic derivative calculations that will boggle your mind: Task: calculate the derivative function of: 1/(x-1)+(2*x-1)/(x+1)^2 Result: (-(1)/(x-1)^2)+(2*(x+1)^2-(2*(x+1)^(2-1))*(2*x-1))/((x+1)^2)^2 The code to achieve this is as simple as: var f,df: string; f := '1/(x-1)+(2*x-1)/(x+1)^2'; try if Translator.CheckSyntax(f) then begin df:=Translator.Derivative(f,'x'); ShowMessage('Derivative function :' + df); end; except ShowMessage('Error'); end; Let's take another example with some trigonometric mathematical functions: Task: calculate the derivative function of: (sin(x)+cos(x))/x Result: ((cos(x)+(-sin(x)))*x-(sin(x)+cos(x)))/x^2 The resulting derivative expression can then be evaluated, for example against x=2: var df: string; v: TValue; df := '((cos(x)+(-sin(x)))*x-(sin(x)+cos(x)))/x^2'; try Translater.Add('x', 2.0); if Translator.CheckSyntax(df) then begin v :=Translator.Calculate(df); ShowMessage('Result :' + s:=TUtilities.SafeToString(v)); end; except ShowMessage('Error'); end; The result of this calculation is: -0,786009779256047. I kindly invite you to explore our new TMS Analytics & Physics Pack. A fully functional trial version is available and the registered versions comes with full source code. We're eager to learn in what kind of exciting and cool applications these powerful classes will find a place!
Read More

EKON 20 – anniversary edition of the famous Delphi related conference with lots of English sessions


Next Monday-Wednesday (7th till 9th of November) will the the 20th edition of the famous Delphi related EKON conference and post-conference workshops at the Hotel Meliá Düsseldorf. It will be a blast, not the least because it’s an anniversary. There are still a few spots left, so drop me a note if you’ve not reserved yet as […] … Read More

Read More

CodeRage XI – Productivity, Platforms and Performance


Join us November 15-17, 2016
for 3 full days of content.

(Tuesday, Wednesday and Thursday)

Call for Paper             Register Now        

Productivity, Platforms and Performance is the theme for this year’s CodeRage conference. This is our 11th conference, and runs from November 15-17, 2016.

We’ve got 3 jam-packed days of engaging content—for developers like you. Please note that Day 3 is by invitation only to Update subscribers. We’re offering a wide variety of topics that center around Embarcadero products, related technologies, Object Pascal, and C++.


There are two learning tracks available: one for Delphi and the other for C++Builder. A number of sessions are highly valuable for both types of developers. There are sessions for every skill level: general, beginner, intermediate, and advanced.

Keep reading to learn more and register for the conference below.

This year, the presenter line-up is still being finalized, but already includes many names from the community leading experts including: Marco Cantù, Nick Hodges, Ray Konopka, Cary Jenson, Bob Swart, Sarina DuPont, David Millington, Pawel Glowacki, Stephen Ball, Bruno Fierens and many more!

The conference covers a broad array of developer topics:

  • Success stories & experiences using Embarcadero products
  • Migration and upgrading advice
  • User stories and showcasing of the coolest apps
  • FireMonkey multi-device development
  • Mobile platform development
  • VCL and Windows development
  • RAD Server and multi-tier development
  • DataSnap and FireDAC database access
  • InterBase & SQL
  • Cloud & REST, Internet of Things (IoT), Devices and Bluetooth
  • Windows 10 and Windows Desktop “Centennial” Bridge
  • Leveraging and developing components

Our regular sessions will be an hour in length, including a 15 minute Q&A. We also have short lightning talks and quick idea sessions. The lightning talks will run consecutively, and the quick ideas will be broadcast between sessions.

Get ready for this event by downloading the Starter Edition of Delphi and/or C++Builder now—100% Discounted!

Get Delphi Starter – 100% Off          Get C++Builder Starter – 100% Off     

It is thrilling for us to host these CodeRage events each year. We always get positive, enthusiastic feedback from developers. Don’t miss out! Click the link below to register.

Register Now        

Read More

Read More

Rich metadata helps auto-generated Delphi forms for entry of data in the cloud


The myCloudData.net service offers easy to use structured cloud data storage. The foundation of the service is of course a REST API. But meanwhile, we added several components for Delphi users to consume this service with an absolute minimum amount of effort. The first step was to create the component TAdvmyCloudData that is part of the TMS VCL Cloud Pack, TMS FMX Cloud Pack, TMS LCL Cloud Pack (and soon also in TMS .NET Cloud Pack). The TAdvmyCloudData component enables using object oriented programming techniques for using the myCloudData.net service. In a second step, we introduced the TAdvmyCloudDataDataSet and TAdvmyCloudDataDataConnection. With these components, controls can be bound directly to the data in the cloud, be it via DB-aware controls or livebindings.

But now, we are excited to introduce the next level of automation: bound DB forms auto generated with the help of rich metadata. Two new components are available for this: TAdvmyCloudDataFormPanel and TAdvmyCloudDataFormBox. These components are similar but the TAdvmyCloudDataFormBox offers a possible scrolling area when this is needed and a header from where editing in the DB form can be started, stopped or cancelled.

When the TAdvmyCloudDataFormPanel or TAdvmyCloudDataFormBox is connected to a TAdvmyCloudDataSet via a TDataSource, it retrieves the DB field information exposed by the TDBField type in the dataset but in addition, it retrieves the rich metadata that myCloudData.net offers. The meta data that can be set include: label, min/max values, edit mask, field lookup relation, typed values, visible, enabled …

In this screenshot, you can see how the integer field STATUS is defined as a typed field. For typed fields, the DB form will use a combobox and this combobox will automatically map the integer data value for the selected displayed value.

The best experience is offered for the default mapping of DB field types to TMS Component Pack controls. TMS Component Pack includes a DB-aware Date+Time input control (i.e. combined date and time entry in a single control), a DB-aware combobox with a separate display and value list with binding to the value part, edit controls with built-in features to limit what can be entered etc…

The default mapping to TMS controls as such is:

boolean field: TDBCheckBox
string field: TDBAdvEdit or TDBAdvMaskEdit
integer field: TDBAdvSpinEdit
floating point field: TDBAdvSpinEdit
typed field: TAdvDBFormComboBox or TDBRadioGroup
blob picture field: TDBAdvGDIPPicture
blob rich text field: TDBRichEdit
date field: TAdvDBDateTimePicker
time field: TAdvDBDateTimePicker
date/time field: TAdvDBDateTimePicker
lookup field: TDBLookupComboBox
disabled field: TDBAdvLabel

Note that via TAdvmyCloudDataFormPanel.Layouter there is access to the class mapper and thus, a custom mapping of a field type to a different control can be done.

This is not all, not only does the metadata control how the DB form is rendered, there are also many parameters that control the behavior of the layout engine for the DB form. This includes control widths, what control types to use for what DB field types, number of columns to use, position of control labels, how to render DB field descriptions, padding, spacing, margins, fonts, what to do with readonly fields and more …

It can also be used to change layouting on the fly. In the demo, this technique is used to let the layout switch between DB field descriptions rendered as extra labels or rendered as hints for the DB control hints:



  if ckDescr.Checked then
    AdvmyCloudDataFormPanel1.Layout.Descriptions.Kind := dkHint;
    ckDescr.Caption := 'Description as label';
    AdvmyCloudDataFormPanel1.Layout.Descriptions.Kind := dkLabel;
    ckDescr.Caption := 'Description as hint';



When the myCloudData table and its metadata is combined with the parameters for the layout engine, the result of the generated DB form in a Delphi VCL application is:

The only code needed here is to make the connection to the cloud service, i.e. setup the application key & secret, the persistence config for the access token and a single line of code to make the connection active. If we would now make an update to the database schema or its metadata and reconnect, the DB form will be automatically adapted to the new settings without having to write any code or without needing to deploy a new application executable.

Getting started

You can signup for a free subscription to the myCloudData.net service. Then, our two products TMS Cloud Pack and TMS Component Pack will get you started. TMS Cloud Pack comes with the TAdvmyCloudDataDataSet and TAdvmyCloudDataDataConnection components. The latest version of the TMS Component Pack includes TAdvmyCloudDataFormPanel and TAdvmyCloudDataFormBox as well as a demo app. We are eager to learn how you enjoy new levels of automation in your apps but even more about all your feedback & suggestions to make this technology even more powerful.

Read More

Read More