All Blog Posts  |  Next Post  |  Previous Post

Coming in TMS WEB Core v1.7: Miletus

Friday, April 2, 2021

TMS Software Delphi  Components
When it comes to bringing web applications to a desktop environment the choice falls on Electron as it's the most popular framework among web developers. We offer support for Electron applications already, but the downside is always there: it's a 3rd party solution that we have no control over.

At the end of the last year we asked ourselves if we can provide an alternative that fits us better. A few months later here we are about to release a beta version of TMS WEB Core v1.7 with Miletus!

What is Miletus exactly?

Named after Thales of Miletus, Miletus is a framework that enables TMS WEB Applications to run as desktop applications and it also provides access for native features. In a nutshell, you can fully reuse code created for a web application, take advantage of HTML/CSS for creating a modern & spectacular responsive user interface, access local files & local databases or closely integrate with operating system capabilities and still easily deploy the application as standalone executable.

Our colleague Holger Flick explains it in more detail how one could create such Miletus application with TMS WEB Core:

Let's take a look at the available classes, functions and components that will enable you to interact with native operating system functionalities!

Classes and functions

  • TMiletusStringList: Read and write local text files.
  • TMiletusBinaryDataStream: Similarly to TMiletusStringList this enables you to write and read local binary files. It also provides multiple formats to access the data.
  • TMiletusClipboard: Read from and write to the OS clipboard.
  • TMiletusShell: Exposes some shell functionalities: open a file with its default application, open an external URL with the default browser, move files to the trash and show files in the containing folder.
  • GetCursorPos: Returns the position of the cursor.
  • GetMiletusPath: Returns the common paths.
  • StartFileDrag: Start dragging a file from your application to any destination where the file is accepted.


  • TMiletusOpenDialog: Displays a native open dialog and returns the selected path(s).
  • TMiletusSaveDialog: Similarly to TMiletusOpenDialog, it displays a native save dialog and returns the selected path.
  • TMiletusMessageBox: Shows a native message dialog. The labels, the dialog type, the buttons and the verification checkbox are all customizable.
  • TMiletusErrorBox: Shows a native error message dialog.
  • TMiletusMainMenu: Creates and appends a native main menu to the form where it's dropped.
  • TMiletusPopupMenu: Creates and displays a native popup menu 
  • TMiletusNotificationCenter: Allows you to show notifications on the operating system. 
  • TMiletusWindow: Allows the creation of multiple application windows which can be linked to forms or other sources.
  • TMiletusTrayIcon: Creates a tray icon on the OS tray. An optional popup menu can be assigned to it.
  • TMiletusFileWatcher: Monitors a list of files for changes. Each file has its own event handler which will be triggered when the file has changed.
  • TMiletusGlobalShortcuts: Add a list of keyboards shortcuts that will be recognized even when the application is not in focus. 

What about database support?

We also added support for local databases! The component TMiletusClientDataSet makes it easy for a Miletus application to create and use local databases by a familiar syntax of using TClientDataSet. It also allows a seamless integration of multiple types of databases with data-aware components like TWebDBGrid, TWebDBTableControl, TWebDBEdit etc... All the database operations can be done in the standard Delphi way through the TMiletusClientDataSet component. 

We prepared 5 database drivers to be used with TMiletusClientDataSet:
  • TMiletusAccessDBDriver for MS Access databases
  • TMiletusMySQLDBDriver for MySQL databases
  • TMiletusSQLiteDBDriver for SQLite databases
  • TMiletusPostgreSQLDBDriver for PostreSQL databases
  • TMiletusMSSQLDBDriver for MS SQL databases

Future plans

While the beta version of TMS WEB Core v1.7 is about to be released with built-in Miletus support for creating Win32 or Win64 applications, we are already working hard on bringing Miletus to both macOS and Linux as a cross platform alternative in TMS WEB Core v1.8! April Fool's Day has already passed but if you still have any doubts here's a sneak peek of our TodoList demo running on macOS! It is the exact same project as the Miletus TodoList demo for Windows but packaged as macOS application.

TMS Software Delphi  Components
As we have full control now with this technology to expose operating system features to the Miletus app and to define how such application integrates with the operating system on Windows, macOS and Linux, we will continue to extend OS integration support. We are eager to learn for what type of applications and for what functionality you would wish to use this technology! 

Tunde Keller

This blog post has received 19 comments.

1. Saturday, April 3, 2021 at 3:29:46 AM

well ... does it need to be said? Android and iOS would be awesome! I was looking into using WebCore with Electron to do this, but apparently it doesn''t work with them, but other things do.

I think the goal should be to have ONE TOOL-CHAIN that lets you target all 5 platforms: Windows, Mac, Linux, Android, and iOS.

That said, there''s a distinct separation between desktops/laptops/notebooks versus mobile devices, including Chromebooks, tablets (Android and iOS), as well as phones (Android and iOS).

So many vendors are going with a "mobile-first" approach to things that this is the first thing a lot of folks ask for. But there are some types of apps requiring a large display area that are nearly impossible to use on tablets, let alone phones.

I do hope you pick a different nomenclature than Miletus for this, however. We''re not dealing with diabetes after all.

How about something like XPLT?

Schwartz David

2. Saturday, April 3, 2021 at 11:19:10 AM

We believe PWA is the best for targetting mobile. No store limitations or censorship, immediate updates without waiting for stores to publish, no stores interfering with the possible monetizing of the app, with PWA install & offline use, it is very close to a native app experience. And TMS WEB Core supports PWA since some time now.
The name is Miletus and not "mellitus" associated with diabetes. The name is inspired from Thales from Miletus:

Bruno Fierens

3. Sunday, April 4, 2021 at 6:44:34 PM

Will you focus your further efforts on this new framework? Meaning that the support for the Electron framework has no priority for the future anymore? I was hoping for a SQLite local access component for the electron framework.

Ulrich Groffy

4. Monday, April 5, 2021 at 8:30:51 AM

One does not necessarily exclude the other. Our team focuses on where customer demand is. The best way to gauge interest in electron specific features like SQLite is to add it to feature requests users can vote on at:
Note that Miletus database access is based on a fully different technical approach than electron and therefore could already support SQLite out of the box.

Bruno Fierens

5. Friday, April 9, 2021 at 11:22:31 PM

I''m worried you are going in the wrong direction. Delphi already makes desktop software at its best. Making the web core work more comfortably with well-known javascript frameworks will attract more customers. I have a criticism other than that. Your demos are insufficient. There are hundreds of videos for every programming language, every framework, every development environment. For example, make a shopping site in 1 hour. Make a dashboard in 1 hour. You also have to make video series. Do not think it is written in the user manual. Or don''t assume we made a video of relational tables for xdata, for example 3-4 years ago. Versions are constantly being updated. people need tms projects that solve real world problems. they want to watch videos of them. You are doing a very hard job when there are so many free software development environments on the market. And you need to tell potential developers how easy and beautiful Tms webcore is. Even those who are a little bit interested in these things get lost in the user manual. You need more and more videos. I''m sure many people will agree with this.

Sinan Orkun

6. Saturday, April 10, 2021 at 3:43:39 PM

This is not something about ''going in a direction''. Miletus does not affect in any way other ''directions''.
It is not an OR story, it is an AND story.
Yes we realize that there is always a need for more examples, videos, training, doc, ... and we are always working on this.
We did the huge effort to bring our TMSWebAcademy ( for example via which we have an additional channel to bring learning experiences.

Bruno Fierens

7. Sunday, April 11, 2021 at 6:03:40 AM

Is there a v1.7 trial?

If possible, please tell me the download URL.


8. Sunday, April 11, 2021 at 9:00:31 PM

At this moment there is a beta for registered users. A trial will become available when we release v1.7.
We are working very hard to have this release in the 2nd half of April.

Bruno Fierens

9. Tuesday, April 13, 2021 at 1:06:42 PM

Thus RemoteDb can re-enter the game to connect to remote data, if the source code is compiled in Miletus. Also give us the possibility to transfer Xdata response in binary format as well as in Json in TMS web core, to optimize speed, bandwidth and transmission between Xdata Web client and server, in order to "obfuscate" even the data transmitted when someone "puts his nose" "inspecting the network traffic in the browser ...
Either way, these are giant steps.
The project is very good even if I still feel the lack of advanced visual components such as powerful sophisticated grids, advanced lookups, and other components that would allow me to bet everything on TMS Web core. I''ll wait ... in the meantime let''s test. Congratulations.

Monterisi Stefano

10. Tuesday, April 13, 2021 at 1:24:38 PM

Many thanks for your feedback Stefano!
Yes, technically, RemoteDB could be applied here as well and will be very interesting.
We''re researching several options to also increase the choices for visual components in coming updates.
Stay tuned!

Bruno Fierens

11. Wednesday, April 21, 2021 at 4:33:56 AM

1- "we will continue to extend OS integration support. " are Android, and iOS in list
2- will be possiable a clientdataset for RemoteDB
at future?
and thanks to TMS for great products.

Ramazan Geven

12. Wednesday, April 21, 2021 at 8:29:09 AM

Hi Ramazan,
1) We think a PWA that bypasses Apple or Google stores for mobile deployment is a better solution
2) We''re investigating for RemoteDB

Bruno Fierens

13. Thursday, April 22, 2021 at 5:12:39 PM

Local printing would be great for kiosk type applications that print labels or tickets.

Hughes Greg

14. Thursday, April 22, 2021 at 10:25:24 PM

This won''t be trivial to make this cross-platform, but we will research it.

Bruno Fierens

15. Thursday, September 30, 2021 at 8:40:26 PM

I agree with Hughes Greg - direct printing would be great for POS systems thad could be without installation. We still do Windows exe POS systems and as a small team we are having problems supporting more platforms (Win/iOS/Android), but if web based.. it would be great. So support for direct printing is crucial.

Gomezel Dino

16. Sunday, March 13, 2022 at 3:38:36 PM

I am not interested in DB, but for PWA i would like a demo to demonstrat how Windows could be put in the div sektion of te hmtl. I have 5 different window types, that th user can choose to work with.

Lasse Storr-Hansen

17. Sunday, March 13, 2022 at 7:32:54 PM

I''m not sure I fully understand your needs. I somewhat understand you want to host forms in DIVs? If so, have a look at the demo Demo\Basics\FormHosting

Bruno Fierens

18. Monday, January 23, 2023 at 6:19:39 PM

Are the FNC components available for use with Miletus?

Richard Hazell

19. Monday, January 23, 2023 at 6:30:24 PM

Yes, FNC can be used in Miletus apps

Bruno Fierens

Add a new comment

You will receive a confirmation mail with a link to validate your comment, please use a valid email address.
All fields are required.

All Blog Posts  |  Next Post  |  Previous Post