TMS Software. All-Access

TMS FNC Core update: Printing and Design-time Editors

Included in the version 2.6 release of the TMS FNC Core package is a print library that is capable of creating files and send them to the printer. And two design-time editors to make it easier to customize the TTMSFNCGraphicsFill and TTMSFNCGraphicsStroke in your FNC products. The print library supports creating documents, adding pages and page content such as HTML formatted text, plain text, drawing primitives and images, with practically the same code on all different frameworks. This has been implemented on three different levels. The lowest level of implementation for the print library is the use of TMSFNCPrinter, this is done in a similar way as TPrinter is used on VCL, Lazarus, FMX Windows and MacOS. With TMSFNCPrinter there is now support for FMX Android and iOS and for TMS WEB Core. The difference with TPrinter is that the drawing should be defined in the OnDrawContent procedure.  uses …, FMX.TMSFNCPrinters, FMX.TMSFNCGraphicsTypes; procedure Click(Sender:TObject); begin TMSFNCPrinter.OnDrawContent := procedure begin TMSFNCPrinter.Graphics.Font.Color := gcBlue; TMSFNCPrinter.Graphics.Font.Size := 40; TMSFNCPrinter.Graphics.DrawText(0, 20, TMSFNCPrinter.PageWidth, 100, ‘Hello’, False, gtaCenter, gtaCenter); TMSFNCPrinter.Graphics.Fill.Color := gcRed; TMSFNCPrinter.Graphics.DrawEllipse(100,200, TMSFNCPrinter.PageWidth – 100, 300); TMSFNCPrinter.Graphics.DrawBitmap(50,400,TMSFNCPrinter.PageWidth – 50, TMSFNCPrinter.PageHeight – 50, Image1.Bitmap, True, True); TMSFNCPrinter.EndDoc; end; TMSFNCPrinter.BeginDoc; end; On top of the TMSFNCPrinter, there is the TMSFNCGraphicsPrintIO component, which gives the ability to further define the layout of the document with a header, footer and page number and to add certain FNC components. The TTMSFNCRichEditorPrintIO and TTMSFNCGridPrintIO are added In the TMS FNC UI Pack. These components have some additional properties to make the export of the TTMSFNCRichEditor or TTMSFNCGrid even more customizable. Working with FNC controls should be fast and simple. And for that reason we’re adding two new design-time editors in TMS FNC Core. These help with setting the properties for the TTMSFNCGraphicsFill and TTMSFNCGraphicsStroke.

Read More

New hands-on book for Delphi Devs

We’re very happy, proud and relieved that we can inform that the newest book in the series “Hands on with Delphi” is available for purchase now via Amazon. It’s the newest seminal work from our colleague and evangelist Dr. Holger Flick for Delphi developers. It has been over 9 months in the works and it is the biggest book so far in the “Hands on” series, counting 467 pages!  The past months have been extremely hard and focused work for Holger assisted by our developer team to help Holger understand and uncover every little detail in the many controls, components, libraries that are handled in the book. Book theme The central theme in the book is data access & visualization, something all Delphi developers deal with on a daily basis when creating applications. There is a large section on grids as this is a commonly used control for visualizing & manipulating data. There is of course also a lot of attention on multi-tier and REST based access to databases as this is typically where the data comes from in the first place. And there are some lesser-known and newer areas in connection to creating data visualization apps like using vector graphics (SVG) in Delphi apps or use brand new Miletus web technology for creating desktop data visualization apps! In a nutshell, there is enough content to learn many new techniques to create better Delphi applications during this summer period.     First test hard-copy edition of the book                                      Official book cover How to order The book is internationally available in all international Amazon stores: Book recognition Last week, we also got the heartwarming news that the first book about TMS WEB Core from Dr. Holger Flick was recognized in the list of “Best web application books of all time“. It is not only nice that the book from Holger appeared in the list but it is even more remarkable that a web application book for Delphi developers is in this list as most books are on JavaScript, TypeScript, Java, PHP, ASP.NET, etc….  In fact, it is the only book that relates to Delphi in the list. Quite a noteworthy feat from Holger we think! Fwiw, this book is of course also still for sale internationally via Amazon: Amazon USA Amazon UK Amazon Germany

Read More

Delphi Community Edition 10.4.2 & TMS Academic program

Earlier this week, Embarcadero published the newest version of the Delphi Community Edition v10.4.2! It is fantastic news that students can now freely and easily discover the latest & greatest Object Pascal RAD component based development IDE. Navigate to https://www.embarcadero.com/products/delphi/starter to get your free Delphi Community Edition v10.4.2.And your red carpet into the wonderful world of Object Pascal programming doesn’t end here. We have our TMS Academic Program where we offer free & fully functional versions of several products for students and teachers. Immediately supercharge your Delphi Community Edition with several of our free academic products. TMS WEB Core v1.8.0.0 Academic  Yesterday we have released the major update v1.8 Sirolo of TMS WEB Core. Today, we are happy to announce that the TMS WEB Core Academic version was also updated to v1.8.0.0.  A summer of learning With Delphi Community Edition and TMS Academic products, you’re in a first class seat to fill your long hot summer with expanding your horizons. Embarcadero helps you even more with the Summer Camp 2021 and don’t forget to keep an eye on our free webinars at TMS Web Academy. Enjoy!

Read More

TMS WEB Core v1.8 Sirolo in videos

Yesterday we released TMS WEB Core v1.8 Sirolo. You can read all about this exciting new release that extends our Miletus technology to macOS and Linux among many other new features. We have already prepared several videos to let you discover the new features via video in addition to the usual text information. In this blog, we bundled a fresh new series of videos we already have: TMS WEB Core Miletus goes cross platform TMS WEB Core new chatbox control TMS WEB Core new rating control Get started – Learn – Stay tuned Start: Either use the TMS WEB Core trial version to explore new territories for your Object Pascal development, or if you are a student get the brand new Delphi Community Edition v10.4.2 and supercharge it with TMS WEB Core Academic. Learn: Watch webinar replays, read blog posts, get new books Stay tuned: A lot of things are cooking in the labs, it’s getting really hot in the kitchen, we have a couple of surprises coming up. Watch this blog to discover it first.  

Read More

TMS WEB Core v1.8 Sirolo released

TMS WEB Core v1.8 Sirolo is released! We are excited to inform that TMS WEB Core v1.8 Sirolo is released today. This new version is the result of months of hard work of the team to bring several new milestones. Take advantage of the summer-time to expand your horizons and dive into the wonderful web world for Object Pascal developers. Here is a brief overview of the core new features included in TMS WEB Core v1.8  1) Miletus support for macOS and Linux After Miletus targeted Windows in TMS WEB Core v1.7, our team now accomplished the phenomenal next step to create cross-platform web technology based desktop applications for Windows, macOS and Linux. And all that with a minimal footprint. On Windows and Linux this means single executable file apps and for macOS the typical application folder but also here with a single application executable file. Deployment can be done via ultra simple XCOPY deployment. In a nutshell, you can create desktop applications from a single source code base from your Delphi IDE on Windows. You do actually not need an Apple mac machine or Linux box to create these applications. The GUI of these applications is rendered in the browser and therefore empowered by HTML5 and CSS3. You can take advantage of existing web application templates to create stunning GUIs. Not familiar with Miletus? You can learn all about it from this webinar replay 2) New Miletus Interbase and Firebird local database support In this new version, we added two more possible local databases that can be directly used from a Miletus application and that is Interbase and Firebird. No need here to create a REST API interface, you can directly connect a client dataset to local databases. In v1.8 this is now: MS Access, MS SQL, mySQL, SQLite, Interbase and Firebird.               3) Miletus support to access INI files, registry, OS version info Convenient for storing application settings, INI files or registry is what developers frequently use. So, from a Miletus app you can now easily access these INI files and the registry in the same way as you can from a VCL or Firemonkey application. Of course, there is no registry on macOS or Linux and here there is automatic fallback on INI files. In addition, a new API is added to retrieve operating system version information about the operating system where the Miletus executable is running. 4) Two new UI components: chatbox + rating control We have added two new controls to TMS WEB Core v1.8. This is a chatbox control and a rating panel. With the TWebChatbox control, you can write web chat applications with little to no code. Drop this component on the form and all you need to do is write some lines of code to send the message to your chat server of choice or receive messages from there. The other new component is the TWebRatingPanel. This is the classic UI pattern of rating via clicking a number of stars (or other icons of choice). The rating panel offers setting rates in units of 1, 0.5 or fully fractional. 5) SHA1 hashing support in the TWebCrypto component As SHA1 is still from time to time needed in specific communication protocols, we extended the TWebCrypto component that is internally using […]

Read More

TMS WEB Core v1.8 Sirolo beta available

TMS WEB Core v1.8 beta is here It was of course highly anticipated and awaited, this new version of TMS WEB Core v1.8 named Sirolo. Sirolo is a small but beautiful town along the Italian coast at the Adriatic sea. After city Ancona (name of TMS WEB Core v1.7 release), it is a nearby little town the Mille Miglia race in 1955 crossed. Other than the reference to this beautiful place, what does TMS WEB Core v1.8 brings on the table for Delphi developers: 1) Miletus support for macOS and Linux After Miletus targeted Windows in TMS WEB Core v1.7, our team now accomplished the phenomenal next step to create cross-platform web technology based desktop applications for Windows, macOS and Linux. And all that with a minimal footprint. On Windows and Linux this means single executable file apps and for macOS the typical application folder but also here with a single application executable file. Deployment can be done via ultra simple XCOPY deployment. In a nutshell, you can create desktop applications from a single source code base from your Delphi IDE on Windows. You do actually not need an Apple mac machine or Linux box to create these applications. The GUI of these applications is rendered in the browser and therefore empowered by HTML5 and CSS3. You can take advantage of existing web application templates to create wonderfull GUIs. Not familiar with Miletus? You can learn all about it from this webinar replay 2) Extended Miletus local databases support In this new version, we added two more possible local databases that can be directly used from a Miletus application and that is Interbase and Firebird. No need here to create a REST API interface, you can directly connect a client dataset to local databases. In v1.8 this is now: MS Access, MS SQL, mySQL, SQLite, Interbase and Firebird.               3) Miletus support to access INI files and registry Convenient for storing application settings, INI files or registry is what developers frequently use. So, from a Miletus app you can now easily access these INI files and the registry in the same way as you can from a VCL or Firemonkey application. Of course, there is no registry on macOS or Linux and here there is automatic fallback on INI files. 4) Two new UI components We have added two new controls to TMS WEB Core v1.8. This is a chatbox control and a rating panel. With the TWebChatbox control, you can write web chat applications with little to no code. Drop this component on the form and all you need to do is write some lines of code to send the message to your chat server of choices or receive messages from there. The other new component is the TWebRatingPanel. This is the classic UI pattern of rating via clicking a number of stars (or other icons of choice). The rating panel offers setting rates in units of 1, 0.5 or fully fractional. 5) SHA1 encryption support in the TWebCrypto component As SHA1 is often needed in communication protocols, we extened the TWebCrypto component that is internally using the browser crypto API to also offer SHA1 support. 6) Lots of smaller improvements and new features Based on your feedback and that of our team, we did […]

Read More

Writing components for TMS WEB Core

Unfortunately, at this time we do not yet have a seminal book like Danny Thorpe’s book “Delphi Component Design” (https://www.amazon.com/Delphi-Component-Design-Danny-Thorpe/dp/0201461366) for component design for TMS WEB Core. It is definitely on our todolist to write a book on TMS WEB Core component design, but until this happened, there are already a couple of resources that we wanted to bundle here that can help you out. Component types There are actually different component types in TMS WEB Core and depending on your needs, you might select the best type that fits. – Components build from HTML elements  In this component type, the component is rendered from HTML elements, like DIV, BUTTON, INPUT, IMG, SELECT, … To render the component, we basically create such HTML elements in the DOM and attach via Object Pascal code technically JavaScript event handlers to the elements and manipulate the HTML element attributes, content & style properties.  As most components included in the TMS WEB Core framework are of this type, the source code of the framework is of course also a great resource to learn from. – Components similar to VCL controls that are based on painting on a canvas A VCL custom control is basically a class that will paint itself and that will react to user interface inputs like mouse, keyboard, touch… The painting in a VCL control is done via drawing on the TCanvas. Well, the good news is that this component model also exists in TMS WEB Core. It can provide an easy way to port existing VCL UI’s to the web. We in fact did this with Tetris game original VCL Delphi code we found for this. You can find all the information in this blog article https://www.tmssoftware.com/site/blog.asp?post=446. Delphi developers should be quickly familiar developing this kind of custom control by descending from the TGraphicControl class and write overrides for OnMouseDown/OnMouseMove/OnMouseUp or OnKeyDown/OnKeyPress/OnKeyUp and also override the Paint method. The TCanvas class in TMS WEB Core has the same interface as TCanvas in VCL, so you will be quickly familiar using a Brush/Pen and methods like LineTo(), Rectangle(), Draw(), … – FNC Components Use the FNC component architecture and develop the component as FNC component that will also work in a web application. This is another approach and comes with the additional benefit that your custom control will not only work in a TMS WEB Core web client application but also in a VCL Windows application or a Firemonkey cross platform application. And it will also work in the free Lazarus IDE with the LCL framework. Component development for FNC is quite similar to VCL or FMX component development. One basically also overrides methods for UI inputs such as keyboard, mouse and touch and performs the drawing of the control. A difference for the drawing is that this is done via the TTMSFNCGraphics context (and not the TCanvas like in VCL). The TTMSFNCGraphics is an abstraction layer that works in all supported frameworks with the same code. A good starting point for beginning to develop FNC custom controls is this blog article https://www.tmssoftware.com/site/blog.asp?post=346.  Other resources Of course, TMS WEB Core full versions ships with the full framework source code, so it is a great learning resource for writing components. In addition to this, we have published several open-source components you can directly […]

Read More

Framework for creating modern web applications

TMS WEB Core is our framework for creating modern web client applications based on the modern SPA web application architecture. You can develop your web client application using the famous Delphi efficient & productive RAD component based methodology and the fully object oriented and strongly typed Object Pascal language. TMS WEB Core can be used on 3 IDEs: Delphi, Lazarus and Visual Studio Code. TMS WEB Core comes with perpetual license and 1 year of FREE updates & support. Subscriptions can be extended for another year at 70% discount! Get full access to: Web client development from Delphi or the free Lazarus & Visual Studio Code IDE Classic web client apps Progressive web applications Electron or Miletus based cross-platform desktop applications (Win/macOS/Linux) Supports FNC components 70% discount for renewals Yearly renewal only 115 EUR* instead of regular 395 EUR. Full online technical support through TMS Support Center. *The renewal price is 70% discount applied to the new license price at the moment of renewal Act now: Find out more about our Web framework and get your license today! NOTE: If you purchase TMS WEB Core, you get an additional discount of 20% on:

Read More

Introducing TMS XData Query Builder and more!

We’re excited to announce TMS XData 5.2 version with several new great features. TMS XData is the more straightforward way to take your Delphi app to the cloud, allowing you to create secure, robust REST servers along with a huge ecosystem around it. Here are the major features in this release, which also includes several minor improvements and bug fixes. XData Query Builder XData allows you to easily query entities from automatic entity set endpoints using a full query syntax. For example, to query customers which name is “Paul” or birthday date is lower then August 1st, 1940, ordered by name in descending order, you can write a code like this: Customers := Client.List(‘$filter=(Name eq ”Paul”) or (Birthday lt 1940-08-01)&$orderby=Name desc’); But now you don’t need to worry to write the raw query syntax anymore. The new XData Query Builder allows you to build such filter using a fluent interface which already does some validation (like checking for correct property names) before the data is sent to the server: Customers := Client.List( CreateQuery .From(TCustomer) .Filter( (Linq[‘Name’] = ‘Paul’) or (Linq[‘Birthday’] < EncodeDate(1940, 8, 1)) ) .OrderBy('Name', False) .QueryString ); You can build logical expressions and projections in a similar way you would do with TMS Aurelius criteria. Receive DTO objects in URL query string Service operations can now receive DTOs (Delphi objects) from the query string of the request URL (as long the DTO only have properties of scalar types). In this case, each DTO property will be a separated query param. Suppose you have a class TCustomerDTO which has properties Id and Name, then you can declare the method like this: [HttpGet] function FindByIdOrName(Customer: TCustomerDTO): TList; And have your Customer parameter be received from a request URL like this: GET /CustomerService/FindByIdOrName?Id=10&Name='Paul'. XData queries in service operations Now, in addition to send queries to automatic CRUD entity set endpoints, you can also benefit from XData query mechanism in service operations. You can now easily receive and process XData query syntax like $filter, $orderby, $top and $skip in service operations, even for DTOs, and create Aurelius criteria from it. You can declare a service like this: type IMyService = interface(IInvokable) [HttpGet] function List(Query: TXDataQuery): TList; Which means clients can now invoke the endpoint passing the same $filter, $orderby, $top and $skip parameters, like this: GET /MyService/List/?$filter=Name eq 'Foo'&$orderby=Name&$top=10&$skip=30 Or, of course, passing the raw filter string with TXDataClient: Customer := Client.Service .List('$filter=Name eq 'Foo'&$orderby=Name&$top=10&$skip=30'); Or even using the brand new XData query builder fluent interface: Customer := Client.Service.List( CreateQuery.From(TCustomer) .Filter(Linq['Name'] eq 'Foo') .OrderBy('Name') .Top(10).Skip(30) .QueryString ); From server-side, you can create an Aurelius criteria automatically from the passed XData query: function TMyService.List(Query: TXDataQuery): TList; begin Result := TXDataOperationContext.Current .CreateCriteria(Query).List; end; Not only that, you can even create a criteria from a query based on a DTO object: function TMyService.List(Query: TXDataQuery): TList; begin Result := TXDataOperationContext.Current .CreateCriteria(Query, TCustomerDTO).List; end; In the example above, even though you are creating a criteria for the TCustomer class, the query will be validated based on the TCustomerDTO class. This means XData will only accept queries that use properties from TCustomerDTO. For example, if the filter string is $filter=Status eq 2, even if the Status property exists in TCustomer, if it does not exist in class TCustomerDTO the query will not be accepted and an error "property […]

Read More

One subscription for all current VCL components!

TMS VCL Subscription is our two year subscription to all our current & future VCL products for Windows application development. With this bundle you will save over 60% now and even more with new free VCL component releases! This bundle includes many unique products like TMS VCL UI Pack with over 600 VCL  components, grids, flexcel, charts, … All products come with perpetual licenses and 2 years of FREE updates & support. After 2 years the subscription can be extended at 50% discount! Products included in the bundle: TMS Logging TMS VCL UI Pack TMS VCL Cloud Pack TMS VCL Chart TMS VCL WebGMaps TMS PassKit TMS FlexCel Component Suite for VCL TMS Scripter TMS Query Studio TMS Unicode Component Pack TMS GUIMotions TMS Async TMS VCL Plugin Framework TMS VCL Security System TMS VCL Instrumentation Workshop TMS Workflow Studio TMS Diagram Studio TMS MultiTouch SDK Get full access to VCL components: Best bundle for Delphi / C++Builder VCL Win32 or Win64 application developer.  2 years free updates & free support.  Renewal after 2 years at 50% discount instead of regular 795 EUR*. Always current with latest Delphi & C++Builder releases. All products accessible via TMS Subscription Manager tool. Full online support through TMS Support Center. *The price is valid for this moment & depends on the price of the pack at the moment of renewal. Act now: Find out more about our products included in TMS VCL Subscription and get your license today! NOTE: Contact sales for special upgrading pricing for existing customers of other products.

Read More