Curious about our new technologies, new challenges & new products for 2020?

It’s fascinating how everything evolves so incredibly fast in the software world!

So our team is also trying really hard to keep up with the latest developments.
And to give our customers access to all our latest developments we have created our no-nonsense subscription TMS ALL-ACCESS!
Because we want our customers to be able to use all our products with no restrictions or limitations.

And when we say ALL we really mean ALL our products we offer now and also all new products we’ll release in the year of the subscription. Moreover, our all-access users are the first to receive the previews and betas of our non-released products!

Here is a small overview of the new products we added in 2019:

  • April 2019:
    TMS FNC Cloud Pack: Seamless access to cloud services from Windows, cross-platform and the web. Included in the TMS FNC Cloud Pack is the ability to create/implement your own REST service client(s).
  • June 2019:
    TMS WEB Core Padua: New additions on many levels:
    Object Pascal to JavaScript compiler improvements, new web frameworks & controls support, new UI components, improved IDE integration.

  • July 2019:
    TMS VCL UI PACK: TMS Component Pack became TMS VCL UI Pack!
    All components were revised for high DPI & VCL Styles support and internally the TMS Component Pack completely moved to a new build platform that was already in use for our cross-platform FMX & FNC products.

  • November 2019:
    Introduction of a new groundbreaking product: “TMS WEB Core for Visual Studio Code”

    At the TMS Training Days in Düsseldorf, Germany as well as at the Be-Delphi conference in Belgium, José León Serna (creator of Delphi for PHP & former Embarcadero IDE lead architect) presentated the preview of TMS WEB Core for Visual Studio Code. After more than a year of hard work & intensive collaboration with the TMS team, this technology preview, with an almost complete feature set for the first release, was presented to the audiences.

  • December 2019:
    TMS WEB Core Ferrara:
    20 new features were added to TMS WEB Core v1.3.

  • December 2019:
    TMS FNC Blox:
    With FNC we aim for reusable code and when bringing TMS FNC Blox to the WEB we wanted to maintain compatibility with FMX, LCL and VCL as much as possible. By rewriting the persistence part of TMS FNC Blox and integrating it into TMS FNC Core it is possible to load blox files that have been saved in a VCL, LCL or FMX application into a TMS WEB Core client application. The code for creating and registering custom blocks in VCL, LCL or FMX is also compatible with TMS WEB Core.
  • January 2020:
    Coming up in January 2020: TMS WEB Core for Visual Studio Code BETA will be available for TMS ALL-ACCESS users!

And we have a long list of new component and new product ideas for 2020!

One of our many commitments for 2020: make user experience more pleasant!

Use the TMS Subscription Manager with a single login to get instant access to all products in your TMS ALL-ACCESS subscription.

  • TMS Subscription Manager categorizes the products per technology : VCL, WEB, FMX, BIZ, FNC, DEV, .NET, IntraWeb and LCL.
  • Per product, you get a description, link to the product webpage, info on latest available version and release date, info on your last download version and download date and info on your last product install version and date.
  • You can mark specific TMS products as your favourite products.
  • It allows you to start multiple downloads.
  • Behind the scenes, TMS Subscription Manager keeps a backup of any product versions you have downloaded. Right-click on the downloaded version number cell per product and from the context menu you can see all available versions (if there are any) and activate another version for install.
  • The TMS Subscription Manager keeps you always informed about the validity of your subscription and will guide you to the renewal order upon expiry.
  • From the TMS Subscription Manager there is a comprehensive list of links to interact with us, via email, social media, forums, RSS, Youtube videos …

So cover 2020 now with your TMS ALL-ACCESS license and you don’t have to do anything else for the rest of the year!
BTW did you know that the renewal price after 1 year is just 495 EUR ?!

Find out more about our products included in TMS ALL-ACCESS.

Read More

Read More

When You Don’t Know, What You Don’t Know

I've been in a rut for about the past six months. Not just a Delphi programming rut but a "life rut". What's worse, I knew I was in a rut and thought I was trying to get out of it only to realize I wasn't. Then this morning came and... I now know what I didn't know."I knew I was in a rut and thought I was trying to get out of it..."I was fascinated by a post in the Delphi Developer group on FaceBook written by a long-time VCL developer who is frustrated with making something work on an Android device. Admittedly, this person is not a GUI guy nor an OOP fundamentalist. I can totally relate to this. I have been using Delphi since it was Turbo Pascal 3. I am a traditional "top-down procedural" programmer who has been struggling to wrap my head around OOP fundamentals.One of the comments on this post stopped me dead in my tracks. It simply stated... "Put your login form in a TFrame" and gave a link to a GitHub repository of FMX Cross-Platform-Samples.https://github.com/FMXExpress/Cross-Platform-SamplesI've seen some of this FMXExpress stuff before but never knew about this GitHub repository. At the time of this writing there are 99 well organized Cross Platform Samples available. I've been looking for an excuse to rededicate myself to learning FMX cross application development in Delphi and this GitHub repository looks like the perfect spot for me to learn."I really don't know what GitHub is or how to use it."Now, I've heard of GitHub before and I've been to a few different GitHub repositories, but I really don't know what GitHub is or how to use it. This was the my first acknowledgement of YDKWYDK. So I jumped on lynda.com and looked for a course about GitHub and found this one called "Learning GitHub".About ten minutes into the course the instructor says "Projects allow you to visualize your work with Kanban-style boards." I've never heard of Kanban. What is Kanban? (More YDKWYDK)."What is Kanban?"I do another search within lynda.com and discoverd a course called "Stay Lean with Kanban".Wow, this Kanban stuff is really cool. In it's simplest form Kanban is a way to visualize and prioritize the workload. You visually see what you are doing and what needs to get done. You also eliminate waste by focusing on what's most important. This is done by limiting the work in progress.I'm about a third of the way through this tutorial and paused it to write this blog because of another YDKWYDK episode.As I was getting to understand this Kanban stuff it hit me. Why can't I use Kanban for my personal life?"Why can't I use Kanban for my personal life?"I can and I intend to do just that. There's a website for "Personal Kanban". There's also a book called "Personal Kanban: Mapping Work | Navigating Life".It's safe to say I have climbed out of my rut and I'm getting back at it. What a journey today has been...FB Delphi Developer > FMXExpress > GitHub > KanbanSemper Fi,Gunny Mike
Read More

Delphi RTL: Generic vs. Traditional Collections

Since Delphi got generic types, in the 2009 version, its runtime library (RTL) has a generic collections unit. The RTL however, still has the classic collections. Recently I got some requests about which is recommended to use, and while the discussion can go a bit deeper, I wanted to blog a high level overview. Classic Container Classes The most basic collection class in the RTL is the TList class (in the System.Classes unit), which represents a general list of pointers (or object references). The container classes (in the System.Contnrs unit) includes the following: TObjectList, which is a TList for TObject references and includes ownership support TComponentList, which adds to the ownership also the notification support all components have TClassList TOrderedList TStack and TQueue with TObjectStack and TObjectQueue Various bucket lists When you are using these containers you often need to cast from the type of the objects you are managing to the fixed type the list supports. This introduced the possibility of errors and causes some runtime delay if you continuously check the type of the objects extracted from the list with dynamic casts (like "as"): myList: TList; myList.Get(3) as TMyObject Generic Collection Classes Along with generic types in the language Delphi added a set of basic generic collections. These are defined in the System.Generics.Collections unit and offer a generic blueprint for containers tied to the specific data type you need. Generic collections include: TList, a basic generic list including support for sorting and enumerations TThreadList, a more thread-safe list with locking support TQueue and TStack TDictionary, a fairly powerful dictionary with customizable key and value types TObjectList which has ownership support for can be used only for object types, similarly to the other following containers TObjectQueue and TObjectStack TObjectDictionary TThreadedQueue Advantages of Generic Collections Generics collections offer the ability to define specific containers for given data types you need to use, and let the compiler check the data type compatibility, rather than doing the same at runtime. This results in cleaner and more readable code, more robust applications, and faster execution -- given the reduced need ot runtime checks: myList: TList ; myList.Get(3); // returns TMyObject All of the new libraries and subsystems in Delphi use the new collections, for example FireMonkey leverages them a lot rather than using the traditional coding style. Any Reason not to Use Generic Collections? There are basically two reasons for not using the new collections. One is that if you have existing working code, you might not want to change it. Even more if the code is in a library (like VCL) changing it could cause incompatibility in code that uses the library. The other reason is that generics in Delphi cause a significant code bloat, because for any data type used by the collection the class methods are replicated, even if almost identical. In very large applications, this has a negative effect on compile and link time and on executable side. Additional Generic Collections Finally, I want to mention that if you use generic collections heavily, you should consider those available in the Spring4D library, which extends what we have in the RTL. See the documentation at https://bitbucket.org/sglienke/spring4d/wiki/Collections Again this is meant to be a short summary and I know I could have been more extensive and precise, hope it is helpful to some of the old developers not fully aware of our generic collections -- which was the goal of the blog post.
Read More

Sylt App für den Urlaub (バケーションアプリ) – クールアプリセレクション

本日のクールアプリセレクションは、Rolf Eschenbach氏の「Sylt App für den Urlaub(バケーションアプリ)」です。このアプリセットは、バケーション情報のワンストップ・リソースで、役に立つツールや情報がいっぱい詰められています。FireDACとFMXコンポーネントを使ってDelphiによって構築されており、AndroidとiOSプラットフォームで利用できます。(read more)
Read More

Delphi: 2 things to check when FMX/VCL units are inserted when you use VCL/FMX components

On G+, Tom Field bumped in the [WayBack] issue that the IDE would add VCL units to the uses list when putting FMX controls on a form. I’ve observed it the other way around as well, and there are two things you need to check: the FrameworkType element in your .dproj file Nowadays either VCL or FMX values are allowed, but in the past more values were used, see Delphi .dproj files: FrameworkType and FormType. the types of form files your unit embeds as resources which is either {$R *.dfm} for VCL or {$R *.fmx} for FMX. References: David Nottage: It has to do with whether there’s {$R *.fmx} or {$R *.dfm} in the unit. You may be able to get away with renaming the .dfm file to .fmx, and changing the directive in the unit. Jeroen Wiert Pluimers:  Your .dproj file tells you what kind of application it is (FMX or VCL) in the FrameworkType element and the IDE should respond to that correctly. –jeroen Source: In the Berlin Update 2 IDE. I’m working on a multi-device app I’m creating. …
Read More

KisKis – クールアプリセレクション

今日のクールアプリセレクションは、KisKis Ltd.のアプリKisKisです。このアプリは、ソーシャルネットワークとデートアプリの最高の機能を組み合わせ、新しいソーシャルメディアエクスペリエンスを提供するものです。KisKisは、そのすべてがDelphiとFireMonkeyによって開発されています。(read more)
Read More

TMS FNC Blox for the WEB!

Intro

A while back, we brought FNC to the WEB, except TMS FNC Blox was missing due to some deep technical limitations. We can now proudly announce that TMS FNC Blox supports TMS WEB Core!

Features

Below is a list of features that are supported in TMS FNC Blox.

  • High-quality (anti-aliasing) drawing of blocks and lines
  • Open architecture for building custom blocks and lines inherited from base classes
  • Ready-to-use flowchart, arrow and electric blocks
  • Linking system allow customizable link points and information retrieval of connected blocks
  • Block gradient, shadow and bitmap
  • Full block customization: pen, brush, color, selection color, minimum width and height
  • Block text customization: horizontal and vertical alignment, font, word wrap, clipping
  • Customizable link points in blocks
  • Full line (link) customization: pen, source arrow shape, target arrow shape
  • Arc & bezier lines, polygon objects
  • Block rotation supported (including text, bitmap and gradient)
  • Separate TTMSFNCBloxToolBar component for easy diagram editing with no line of code (needs TMS FNC UI Pack)
  • Diagram snap grid
  • Diagram rulers
  • Saving/Loading diagram to/from file and stream
  • Diagram zoom in/out
  • Panning
  • Helper classes TTMSFNCBloxBlockDrawer for easy custom drawing on custom blocks
  • Object deletion and inserting, zooming, and more.

Compatibility

With FNC we aim for reusable code and when bringing TMS FNC Blox to the WEB we wanted to maintain compatibility with FMX, LCL and VCL as much as possible. By rewriting the persistence part of TMS FNC Blox and integrating it into TMS FNC Core it is possible to load blox files that have been saved in a VCL, LCL or FMX application into a TMS WEB Core client application. The code for creating and registering custom blocks in VCL, LCL or FMX is also compatible with TMS WEB Core.

Getting Started

Install the latest version of TMS WEB Core, TMS FNC Core and TMS FNC Blox
The demo (also included in the TMS WEB Core demonstrates the uses of the TTMSFNCBloxToolBar, TTMSFNCBloxSelector and how to add, configure and manipulate blox elements.
Demo: http://www.tmssoftware.biz/tmsweb/demos/TMSWEB_FNCBlox/

Read More

Read More