Planning / Scheduling in FMX

Intro

The multi-device, true native app platform The FireMonkey® framework is the app development and runtime platform behind RAD Studio, Delphi and C++Builder. FireMonkey is designed for teams building multi-device, true native apps for Windows, OS X, Android and iOS, and getting them to app stores and enterprises fast.

source: https://www.embarcadero.com/products/rad-studio/fm-application-platform

FMX (FireMonkey) released in 2011 and shortly after we delivered a first set of components. Today, we want to show you the TTMSFNCPlanner component, a highly configurable planning/scheduling component.

Features

Below is a list of the most important features the TTMSNCPlanner has to offer. The features are not limited to this list, but this will give you a quick insight on what we offer to be able to view and edit appointments / tasks in FireMonkey.

  • Built-in and customizable inplace and dialog editing
  • Moveable and sizeable items with HTML formatted text and hyperlink detection
  • High performance virtual mode
  • Various display modes: day, month, day period, half day period, multi day, multi month, multi day resource, multi resource day and custom displays
  • Multiple events for all kinds of interactions such as editing, item inserting, updating, moving and sizing
  • Multiple events for custom drawing and customization of default drawing
  • Item hints and time indication helpers
  • Optional overlapping items
  • Touch scrolling and selection
  • Optimized for mobile devices
  • Recurrency support
  • Databinding support via the TTMSFNCPlannerDatabaseAdapter
  • Separate ToolBar Popup
  • PDF Export capabilities

Learn More!

Want to learn more about what the TTMSFNCPlanner can do? Here is a video that highlights some of the above features through a demo application.

Download & Explore!

The TTMSFNCPlanner component is part of the TMS FNC UI Pack, which, on top of FMX, also offers the ability to write your code once and target other frameworks (VCL, LCL and WEB). You can download a full featured trial version of the TMS FNC UI Pack and start exploring the capabilities of the TTMSFNCPlanner component.

Coming up

The TTMSFNCPlanner is the second of a series of components that is covered to empower your FMX (FireMonkey) developments. We started the series with a general overview of the most important components that we have to offer, followed by the TTMSFNCRichEditor. Next up will be the TTMSFNCTreeView component, a highly configurable, high performance tree view with virtual and collection-based modes able to deal with millions of nodes so stay tuned for more!.

Read More

Read More

SVG quality improvements

Intro

A while back, we introduced SVG in TMS VCL UI Pack. The first version focused on smaller icon sets. We have meanwhile tweaked and improved the engine and although there is still a lot of work to be done, the next update of TMS VCL UI Pack will offer 2 quality of life improvements:

  • Gradients (GDI+)
  • Rendering quality (GDI+)
  • Disabled drawing (TVirtualImageList)

Gradients

Gradients were left out of the first version because of shortcomings on other platforms, as we also have SVG rendering engine support for FNC targeting not only VCL, but also FMX, LCL and WEB. The underlying native graphics can be quite complex and have various differences between frameworks. Therefore we decided to take the initial step of offering linear & radial gradients support in VCL only using GDI+. Please note that we are still targeting smaller less complex icons, but we’ll add improvements over time.

Rendering quality

The initial version did not use the full quality that GDI+ had to offer. When working with SVG, we focused on adding features instead of quality and therefore the rendering quality was not optimal. We have now changed this so it has a smoother appearance independant of the size.

v1.0                       v1.1

      

Disabled drawing

In v1.0 we also added support for TVirtualImageList, which converts SVG files into bitmaps on the correct size without losing quality. You can add a TAdvSVGImageCollection attached to a TVirtualImageList and specify only one SVG suitable for any size you want. The TVirtualImageList also has the ability of automatically adding disabled state versions of the converted bitmaps. Initially, this was not working due to the way the bitmap alpha channel was configured and the SVG quality drawing on the bitmap before returning it to the TVirtualImageList. In this update, we have added correct alpha channel to the bitmap conversion routine.

What’s next?

The above applies to VCL only and will be part of the next update of TMS VCL UI Pack. The engine is a port from FNC, support for other operating systems (macOS, iOS, Android) is still ongoing. As soon as things get shape, we’ll post an update.

Read More

Read More

SVG quality improvements

Intro

A while back, we introduced SVG in TMS VCL UI Pack. The first version focused on smaller icon sets. We have meanwhile tweaked and improved the engine and although there is still a lot of work to be done, the next update of TMS VCL UI Pack will offer 2 quality of life improvements:

  • Gradients (GDI+)
  • Rendering quality (GDI+)
  • Disabled drawing (TVirtualImageList)

Gradients

Gradients were left out of the first version because of shortcomings on other platforms, as we also have SVG rendering engine support for FNC targeting not only VCL, but also FMX, LCL and WEB. The underlying native graphics can be quite complex and have various differences between frameworks. Therefore we decided to take the initial step of offering linear & radial gradients support in VCL only using GDI+. Please note that we are still targeting smaller less complex icons, but we’ll add improvements over time.

Rendering quality

The initial version did not use the full quality that GDI+ had to offer. When working with SVG, we focused on adding features instead of quality and therefore the rendering quality was not optimal. We have now changed this so it has a smoother appearance independant of the size.

v1.0                       v1.1

      

Disabled drawing

In v1.0 we also added support for TVirtualImageList, which converts SVG files into bitmaps on the correct size without losing quality. You can add a TAdvSVGImageCollection attached to a TVirtualImageList and specify only one SVG suitable for any size you want. The TVirtualImageList also has the ability of automatically adding disabled state versions of the converted bitmaps. Initially, this was not working due to the way the bitmap alpha channel was configured and the SVG quality drawing on the bitmap before returning it to the TVirtualImageList. In this update, we have added correct alpha channel to the bitmap conversion routine.

What’s next?

The above applies to VCL only and will be part of the next update of TMS VCL UI Pack. The engine is a port from FNC, support for other operating systems (macOS, iOS, Android) is still ongoing. As soon as things get shape, we’ll post an update.

Read More

Read More

Join the Great Delphi 26th Birthday Showcase Challenge

Next Sunday, February 14th 2021, will be the 26th anniversary of the launch of Delphi 1 by Borland. Last year Embarcadero had a great celebration, inviting some of the original developers to get involved, as you can see at https://delphi.embarcadero.com/ This year, the company is organizing a showcase challenge, inviting all Delphi developers to describe the applications they have built using the tool. You can read the details at https://blogs.embarcadero.com/delphi-26th-birthday-showcase-challenge/ There are some great prizes but also the change to feature your application at https://blogs.embarcadero.com/category/showcase/ and share it with other developers. Tools and utilities, mobile apps, business apps, games and simulations, medical and scientific apps, music and image processing, anything goes and the variety of applications build with Delphi is a clear testament of its power and versatility. Only a few development tools have proved to be such a great platforms for developers for such a long time, and possibly none has offered the same level of compatibility with 20 years old code while offering support for the latest Windows 10 (and mobile platforms) features. Celebrating Delphi's birthday is not simply looking to the past, but it is discussing the present and the future of this great tool and of software development.
Read More

Webinar: A Cross-Platform Development Deep Dive with the TMS FNC Suite of Components


We look forward to connect with you at the upcoming webinar “A Cross-Platform
Development Deep Dive with the TMS FNC Suite of Components” 
organized by Embarcadero.

 

Webinar content:

Starting a new project? Are you going to
use FireMonkey or VCL? What about targeting the Web with TMS WEB Core? Luckily
the Framework Neutral Components (FNC) from TMS Software works with all those
frameworks and more. 

Join this live deep-dive session with
Dr. Holger Flick, Bruno Fierens and Pieter Scheldeman of TMS Software where the content will focus
on your questions with live demos, real-time debugging, and a level of
interaction like never before. You won’t want to wait for the replay, mark your
calendar today!

The TMS FNC Suite gives developers a
single UI controls set, a single learning-curve and a single license to have
the freedom of choice to develop Delphi or C++Builder, using VCL for Windows,
FireMonkey cross-platform applications for Windows, macOS, Android, iOS, Web
applications with TMS WEB Core, or even Lazarus LCL applications for Windows,
macOS, or Linux.

There is so much to tell about TMS FNC components so we kindly invite you to visit our landing pagewhere more information is provided, including online demos, video tutorials and more. Extras videos can be found on the following page: FNC videos

Register today!

Read More

Read More

Webinar: A Cross-Platform Development Deep Dive with the TMS FNC Suite of Components


We look forward to connect with you at the upcoming webinar “A Cross-Platform
Development Deep Dive with the TMS FNC Suite of Components” 
organized by Embarcadero.

 

Webinar content:

Starting a new project? Are you going to
use FireMonkey or VCL? What about targeting the Web with TMS WEB Core? Luckily
the Framework Neutral Components (FNC) from TMS Software works with all those
frameworks and more. 

Join this live deep-dive session with
Dr. Holger Flick, Bruno Fierens and Pieter Scheldeman of TMS Software where the content will focus
on your questions with live demos, real-time debugging, and a level of
interaction like never before. You won’t want to wait for the replay, mark your
calendar today!

The TMS FNC Suite gives developers a
single UI controls set, a single learning-curve and a single license to have
the freedom of choice to develop Delphi or C++Builder, using VCL for Windows,
FireMonkey cross-platform applications for Windows, macOS, Android, iOS, Web
applications with TMS WEB Core, or even Lazarus LCL applications for Windows,
macOS, or Linux.

There is so much to tell about TMS FNC components so we kindly invite you to visit our landing pagewhere more information is provided, including online demos, video tutorials and more. Extras videos can be found on the following page: FNC videos

Register today!

Read More

Read More

hcUpdateFramework is Released

A long time ago, in a place not so far away, I wrote a framework which allowed a corporation to update an application it had deployed to 100+ remote locations with slow internet connections. Back then there were a few alternatives to rolling your own, but nothing seemed to have the feature set and development commitment from a Delphi component vendor. As a result, it was decided that I should implement one. The entire AutoUpdate Framework was initially written in Delphi XE2. Although BITS was going to be used to transfer the files since it offers the ability to throttle bandwidth, in the end, for simplicity sake, web services were employed instead. Rather than a simple call to download an MSI, the framework provides a large degree of flexibility: Do you simply want to generate and apply a binary patch? Do you need to be able to apply a series of updates to bring the installation up to the current version? Do you want to compress/zip the files to be delivered? What about deploying additional files and removing obsolete ones? Do you want to display a list of changes so the user can choose whether they update? Do you want to notify the user that updates are available while they are using the application? Do you want to make the update mandatory so bug fixes that are causing data issues are squashed ASAP? Do you want to schedule the application of an update silently in the background at a given time in the middle of the night? All these scenarios are supported and with a custom deployment application, you can see what version each user is running, any errors in the update process and when they last launched the application. It would be easy to extend the Server to accept bug reports and create an integration to your bug tracking system and/or CRM.  Usage Telemetry could also be added, and if user’s don’t pay, an update can render your software inoperable. Recently I resurrected the code to provide updates to a client during COVID, so I added Firebird support and changed the data model to track registrations (new application users). It would be very easy to extend the system with your own custom licensing code and track where your new users are located and how many “conversions” from trialware or lite to full versions you’re getting. That’s the power of open source;  no waiting for a vendor to implement the features you want for your use cases. In subsequent posts, I will describe the moving parts of the system.
Read More

web & mobile developer magazine article on TMS WEB Core

It’s been over a year now since the first release of TMS WEB Core.
Meanwhile many developers have started first experimenting and then building new web technology based applications with the standalone version of TMS WEB Core and additional tools like TMS XData that are all included in TMS ALL-ACCESS. Some developers combined this with our FNC cross-platform components and have created extraordinary projects!

We were especially pleased to see this month that the well-known and respected German magazine on web development: “web & mobile developer” features an article on TMS WEB Core.
This is especially encouraging as it spreads the word about TMS WEB Core and more importantly the Delphi IDE to a wide community of software developers. Let’s hope it gets noticed and might convince developers to explore RAD component based web development in the Delphi world!

Here is a short summery of the article:

TMS WEB Core v1.6.1.0 for Delphi/Lazarus is available standalone now and is also part of TMS ALL-ACCESS.
Do you have already one or more TMS product licenses and are interested to get on board for TMS ALL-ACCESS, our no-nonsense formula for access to our full current and future toolset, priority support and access to betas, contact our sales: sales@tmssoftware.com for a best possible upgrade offer.

Read More

Read More

Quick and Dirty FireMonkey Donut Gauge

Someone was asking where they could find gauge style chart components for FireMonkey like the ones you might see on a dashboard. They even helpfully posted some pictures.At least one of these looks like it would be easy to reproduce without any third party components. The requirements are straight forward. Create a donut gauge chart similar to the one pictured here. It will operate like a
Read More

Async keyword in TMS WEB Core (Leon Kassebaum)

Async? What’s that?

Maybe you have already heard about the two concepts of synchronous and asynchronous processing of
code statements. I give you an example. Let’s have a look at a “normal” Delphi application and the
following lines of code:

procedure MyProc();
var
  lResponse : string;
begin
  lResponse := ExecuteServerRequest;
  lResponse := 'Response: ' + lResponse;
  Writeln(lResponse);
end;

I think you know this type of application (maybe a VCL or FMX app) and of course line 6 is executed
after receiving the servers response. This behavior is called synchronous because the computer performs
the written code line by line.

If you write the same type of code in JavaScript things are working differently. Let me explain why.
First of all pure JavaScript is single-threaded. Due to that fact it only has the possibility to perform
your code line by line, so to say JS code is executed synchronously. But this only applies to JS and not
for browser api calls. Imagine, if you perform an http request as I did in the example above, you call
functions from the browser api. At this point the JS engine can continue with the next statement (next
line of code) and the browser performs his task in the background. As soon as he is ready he gives you a
callback. This is due to the fact that a website always has to react e.g. for resizing. If this would not be
possible you would see an hourglass when connecting to a webserver (which lasts a bit) and your whole
web app would be frozen. I think you know the well known Blue circle of death from windows.

The reason in JS style

So what to do if you want to connect to a webserver? The thing is that you have to wait for the response
until you can continue your code. In JS the answer is splitted to three statements: async, await and
promises.

The concept behind this is that the promise which executes your code (e.g. pulling a webserver), has two
callback functions. One is called if everything was successful and the other handles possible errors. Maybe
it is better to give you a tiny example in JS:

...
let lPromise = new Promise(
  function(ASuccess, AFailed){
    setTimeout (
      function(){
        ASuccess("Waited 2 seconds") ;
      }, 2000);
    });
...

I created a promises which performs setTimeout() to wait for 2 seconds and then he calls the success
function.
The next step is that you can mark a function as async so that it returns a promise and no longer maybe
a string. This

...
async function MyAsyncFunction(){
  return "Hello World!" ;
}
...

is the same as

...
async function MyAsyncFunction(){
  return new Promise(
    function(ASuccess, AFailed){
	  ASuccess("Hello World!");
	});
}
...

I know this is hard to understand but please keep in mind that this is just another way to return a
promise but it is much more legible.

Calling this function with the await keyword makes sure that your code waits for the success callback
function of the returned promise and calculates the result of this function which can be the response of
the server. Think of the lPromise from above which simply waits 2 seconds. If I would run the following
lines of code

console.log("Before calling");

  let lPromise = new ...

console.log(await lPromise);

it would first print Before calling to the console and wait 2 seconds in order to print Waited 2
seconds.

Available in TMS WEB Core?

Sure, this is a great feature of JS and should be possible in TMS WEB Core to build modern web apps.
But it is not. So sorry, end of article.

No, just fun! Of course you can use it! The compiler magicians from the FPC community integrated this
for you.

How to use

The use of async and await are very similar to its usage in JS. I will start with the async identifier.
To convert a normal function to an async function you can do this:

function TMyObject.ThisMethodIsAsync: Integer; async;
begin
  ...
end;

or this, which is more readable and compilable by the Delphi compiler because he does not know the
async keyword:

TMyObject = class(TObject)
  [async]
  function ThisMethodIsAsync: Integer;
end;

...

function TMyObject.ThisMethodIsAsync: Integer;
begin
  ...
end;

The mindblowing effect on this async keyword is that ThisMethodIsAsync no longer returns an Integer
but now a TJSPromise! Remember, this is very similar to JS.

It is also possible to create this promise manually. This way you can call the success callback function
for returning your result. Technically this is the same but your code looks much more than Delphi code
if you use async. Look at this:

function TMyObject.ThisMethodIsAsync: TJSPromise;
begin
  Result := TJSPromise.new(
    procedure(ASuccess, AFailed: TJSPromiseResolver)
    begin
      ASuccess(7);
    end);
end;

This example just returns the value (7). One problem could be that now you cannot share this source code
between Delphi (maybe VCL) and TMS WEB apps because there is no TJSPromise in the VCL.
Well, now there is a tiny base for async calls because the promise has a success callback function. But
how to get the Result of async functions? Good question but as I said, this is very similar to JS, so we
can use await. Here’s the syntax:

procedure TMyObject.CallAsyncFunction;
var
  lBuffer: Integer;
begin
  lBuffer := await(ThisMethodIsAsync);
  ...
end;

In the lines below calling that async function, you can be sure that the result is stored in lBuffer and
there won’t be any callback function which returns later. If you want to have a look at more examples
please visit the Pas2JS homepage.

Compiler magic

If you want to write and compile your code in the Delphi IDE you should pay attention that the dcc
compiles your code (otherwise all of your code is marked red). Because of that the whole WEBLib exists
twice. One implementation is the real one which is executed in the browser (Core Source) and the other
one is for Delphi (Component Library Source). Of course you want to use programming assistance and
to give Delphi a break you should give him valid Delphi code so that he can make suggestions. E.g.
this is why I recommend you to use the async attribute. At this points the stub units in the “second”
WEBLib are used because all functions from the real one are defined here as well but in valid Delphi syntax.

But anyway, let’s have a concluding look at await. The thing is that Pas2JS recognizes async functions
as functions which return a promise, but Delphi thinks that it returns e.g. a string or an Integer.

Well, the TMS team dealt with making await Delphi conform and defined it in the stub units like this:

function Await(const AValue: string): string; overload;
begin
  Result := AValue;
end;

As you can imagine this only works for a finite amount of types (in this case primitive types like string
and Integer). So to say, if you create an async function which returns TMySpecialType the Delphi
programming assistance crashes because await is not defined for it whether it compiles with Pas2JS.
But the TMSWEBCompiler provides some compiler magic. It exists the following record in the unit
JS.pas (since I mean the stub unit it is located in the Component Library Source folder, not in the Core
Source folder):

TAwait = record
  public
    class function Exec<T>(const AValue: T): T; static;
    ...
end;

This allows you to write the following:

...
var
  lValue: TMySpecialType;
begin
  lValue := TAwait.Exec<TMySpecialType>(AsyncFunctionReturningThisType);
...

Internally this is only converted to

...
var
  lValue: TMySpecialType;
begin
  lValue := await(AsyncFunctionReturningThisType);
...

You should better use this generic method because this is compilable with Delphi and your programming
assistance keeps working.

Conclusion

So to say, we have found a possibility to “synchronize” our code but keep in mind that it is still asynchronous! The huge advantage of this is that your code becomes very legible (you will thank yourself in
the future) and you use the latest concepts of the JS engine, too!

Author: Leon Maximilian Kassebaum

Read More

Read More

TMS WEB Core for Visual Studio Code v1.2 released!

After we released TMS WEB Core v1.6 Pesaro for Delphi & Lazarus on earlier in January this year, we are pleased to inform that the release of TMS WEB Core for Visual Studio Code is now here as well. This brings the framework and language support on par with the versions for Delphi or Lazarus.

Focus on new language features

Among the major new capabilities of the pas2js compiler are:

  • Generics
  • Attributes
  • Class constructors
  • Resource strings
  • Async procedure decorator
  • Await support
  • JavaScript promises support
  • Resource file support

So, the long awaited support for generics (that comes with the accompanying RTL unit generics.collection) and attribute support will allow that nearly all of your existing Delphi code can move over to TMS WEB Core for creating web applications.

On the other side, the new support for async procedures, for promises and for await, will mean that you can use modern web paradigms for handling asynchronous functions easier. These features async, promise and await are direct equivalents to the existing JavaScript functionality and do not exist for native Delphi application development.

Updating is easy

Updating to the new TMS WEB Core for Visual Studio Code v1.2 is easy. Either you obtained TMS WEB Core for Visual Studio Code from the Microsoft marketplace and the IDE will handle the update automatically for you or you can download the latest version from our website. Either way, you will need to reactivate either your trial or full registered version credentials.

What’s next?

We have been working a long time on v1.2 but in parallel we have already made significant advances for the next release v1.3. The new version will bring component package support. So, from the IDE, you will be able to install additional component packages including creating your own custom component packages. When this is in place, your array of available components at design-time will rise significantly as our full range of TMS FNC Components will become readily available from TMS WEB Core for Visual Studio Code as well. For now, this use was limited to using the classes via runtime code.

Get started now

If you didn’t get your feet wet already with RAD component based Object Pascal based web client development, now is the time to enter this fast moving & fascinating world. The sheer amount of new possibilities and territories is staggering. You cannot only develop no-deployment cross platform rich web client applications, but also offline usable and installable PWA’s for use on mobile devices bypassing Apple or Google stores. Or you can use the Electron framework to create cross-platform desktop applications for Windows, macOS and Linux with a modern and fresh looking HTML/Web based GUI. And with Visual Studio Code, you can do all this directly from your favorite operating system: Windows, macOS or Linux.

Learn here about the new generics support:

Get the TMS WEB Core for Visual Studio Code v1.2 trial or use TMS WEB Core for Visual Studio Code v1.2 as part of the TMS ALL-ACCESS subscription, the no-nonsense subscription to our entire product portfolio coupled with priority technical support services.

Read More

Read More

WYSIWYG rich text editing in FMX

Intro

The multi-device, true native app platform
The FireMonkey® framework is the app development and runtime platform behind RAD Studio, Delphi and C++Builder. FireMonkey is designed for teams building multi-device, true native apps for Windows, OS X, Android and iOS, and getting them to app stores and enterprises fast.

source: https://www.embarcadero.com/products/rad-studio/fm-application-platform

FMX (FireMonkey) released in 2011 and shortly after we delivered a first set of components. Today, we want to show you the TTMSFNCRichEditor component, a light-weight WYSIWYG editor for formatted text.

Features

Below is a list of the most important features the TTMSFNCRichEditor has to offer. The features are not limited to this list, but this will give you a quick insight on what we offer to be able to edit and format rich text content in FireMonkey.

  • Formatted text with bullets, hyperlinks, images, indenting and aligned paragraphs
  • Functions for merging, highlighting text, undo/redo and clipboard operations
  • Horizontal ruler support
  • Stores its text natively in the .RTE file format
  • Possibilities to load from .TXT, .RTF, .HTML and .RTE
  • Export to .PDF, .TXT, .RTF, .HTML and .RTE
  • Separate rich editing/formatting toolbars
  • Emoticons support
  • Support for BitmapContainer images
  • Autocorrect: custom auto-correct actions
  • Interface to TMS Spell Check engine

Learn More!

Want to learn more about what the TTMSFNCRichEditor can do? Here is a video that highlights some of the above features through a demo application.

Download & Explore!

The TTMSFNCRichEditor component is part of the TMS FNC UI Pack, which, on top of FMX, also offers the ability to write your code once and target other frameworks (VCL, LCL and WEB). You can download a full featured trial version of the TMS FNC UI Pack and start exploring the capabilities of the TTMSFNCRichEditor component.

Coming up

The TTMSFNCRichEditor is the first of a series of components that is covered to empower your FMX (FireMonkey) developments. We started the series with a general overview of the most important components that we have to offer. Next up will be the TTMSFNCPlanner component, a highly configurable planner / scheduler component for FMX (FireMonkey), so stay tuned for more!.

Read More

Read More

TMS WEB Core v1.6 released

We’re thrilled to bring the quantum leap the pas2js v2.0 compiler brings to TMS WEB Core with the release of TMS WEB Core v1.6 Pesaro today.
The new compiler has been in development for quite some time and brings the experience for Object Pascal developers to create web client applications from the Delphi or Lazarus IDE to a new level. Among the major new capabilities of the pas2js compiler are:

  • Generics
  • Attributes
  • Class constructors
  • Resource strings
  • Async procedure decorator
  • Await support
  • JavaScript promises support
  • Resource file support

In a nutshell, this ensures you can bring your modern Object Pascal code to the web as well as take advantage directly from Object Pascal code from modern typical web paradigms such as await & promises for handling asynchronous code.

All active registered users for TMS WEB Core can obtain the update after login on our website under “My Products”. Just as our team internally can now start taking advantage of the new compiler features to write new & enhanced framework code, you can apply this to your application level code. The new compiler features will also enable more of other TMS products that were already using generics and attributes for example to become a possible target
for porting this to TMS WEB Core.

TMS FNC Products ready for the new TMS WEB Core

Note also that our entire TMS FNC components portfolio has already been prepared for compatibility with TMS WEB Core v1.6. The amazing array of cross-framework, cross-platform components from TMS FNC UI Pack, TMS FNC Chart, TMS FNC Cloud Pack, TMS FNC Maps, TMS FNC Blox, TMS FNC Dashboard Pack is ready for use in your web client applications now.

Coming soon to Visual Studio Code

As the same compiler and exactly the same framework code is used in TMS WEB Core for Visual Studio Code, you can expect shortly the release of TMS WEB Core for Visual Studio Code v1.2 that will bring all these enhancements to the Visual Studio Code IDE running directly on Windows, macOS or Linux.

It doesn’t end here, it just continues

With the new TMS WEB Core release, the path is now also open to start introducing new functionality and features at framework level. Our team has been very busy in parallel to develop new extensions to the framework, so, be assured that TMS WEB Core v1.7 is already in the pipeline. More about what is cooking in the labs for v1.7 will be detailed in the coming weeks.

Get started now

If you didn’t get your feet wet already with RAD component based Object Pascal based web client development, now is the time to enter this fast moving & fascinating world. The sheer amount of new possibilities and territories is staggering. You cannot only develop no-deployment cross platform rich web client applications, but also offline usable and installable PWA’s for use on mobile devices bypassing Apple or Google stores. Or you can use the Electron framework to create cross-platform desktop applications for Windows, macOS and Linux with a modern and fresh looking HTML/Web based GUI.
And know that we have even more and exciting alternative targets for TMS WEB Core web client applications in the making!

Learn here about the new generics support:

Get the TMS WEB Core v1.6 trial or use TMS WEB Core v1.6 as part of the TMS ALL-ACCESS subscription, the no-nonsense subscription to our entire product portfolio coupled with priority technical support services.

These are exciting times for Delphi, Lazarus or Object Pascal developers in general!

Read More

Read More

Simple FireMonkey 3D

Creating 3D software is undeniably cool, but it might be intimidating, what with all of the math and unfamiliar concepts. And the math... Fortunately, FireMonkey does a lot of the heavy lifting for us. You can get started while writing little or no code and still have the option of digging deeper when you need to. It's a familiar concept for Delphi developers. We'll create a simple FireMonkey
Read More