Eating our own TMS WEB Core food

While we have used TMS WEB Core already for several internal projects, earlier this year we decided to embark on a first public TMS WEB Core project.
“Eating our own dog food” was one of the main objectives but an even more important reason was bringing the concept of our TMS Subscription Manager to the computing universe.

That is, TMS Subscription Manager is a strict Windows only desktop application while the TMS WEB Core based variant can be used from Windows, macOS, Linux, iOS, Android, in fact any computing device that has a HTML5 enabled browser, so also your SmartTV or Tesla car.

Purpose of our first public TMS WEB Core application

The new application is called TMS Subscription Dashboard. It is not a 100% replacement for TMS Subscription Manager as it can of course not launch Windows based executable installers automatically (talking about a huge security breach that would be) on every platform. But TMS Subscription Dashboard offers our customers having purchased a subscription to any of our subscription bundles information about the latest releases, the latest features, improvements & fixes added. It shows of course the status of the subscription, shows when it expires and offers a possibility to renew an expired subscription. Finally, it offers access to product manuals, product forums for support and a direct path to our social media channels.

Let’s get technical

Being software developers, I’m sure you will be interested about a number of technical tidbits about the new TMS Subscription Dashboard. To begin with, TMS Subscription Dashboard is a progressive web application.

PWA

A “progressive web application” (PWA) is a term coined for web applications that respect a number of requirements:

  • They are responsive: i.e. these web applications adapt the rendering to work optimally on a wide range of screen form factors
  • They can start offline: i.e. also with no internet connection available, the application can at least start
  • They are safe: the web application is hosted on a HTTPS enabled server and only routed from HTTPS
  • They can be installed on a desktop / home screen: the application offers a title, icon, description and can be added on a desktop or home screen for future launching without needing a browser
  • They are app-like: When launched directly, the user cannot visually see it concerns a web application, it looks & behaves as a native application

TMS WEB Core offers the creation of a progressive web application out of the box. It is an application type. When you select to create a new “TMS WEB Core PWA”, a new project template is created that satisfies all technical requirements to be a progressive web application. For the TMS Subscription Dashboard, this means we didn’t have to do any specific effort in this area except specifying an application icon, title and description.

Login

Another very nice freebie we get being a PWA is that the browser / operating system can (optionally) take care of the credentials management. Of course, the TMS Subscription Manager requires you to login to get access to the information concerning your subscription. Login is performed through your registration email and your registration code. As under the hood this concerns a web application, the browser will offer to persist the credentials entered and offer to automatically complete these for future login. It gets especially nice on a smartphone device for example, where the browser stored credentials are coupled to your biometric data. Use your touch ID (finger scan) or face ID and your previously entered credentials will be used to login. No need to remember your login information anymore. To get this functionality from a TMS WEB Core web application, all we need to do is put a TWebEdit control for username & for password in a TWebHTMLForm. The TWebHTMLForm signals the browser it concerns login information. No extra code is needed here. It takes literally not much more than putting the right controls together. Yes, RAD in its purest form as we have always loved from Delphi.

Scrolling list

Displaying the products in a subscription bundle is done via a new control: TWebContinuousScroll. This control offers a list of items that can optionally load dynamically as the user scrolls. Think about wading through your endless feeds from Twitter, Facebook, Instagram, … where new feed entries are loaded as one scrolls down. The same with TWebContinuousScroll. It can fetch information during scroll and it offers full customization (via a HTML template) of the information displayed in items. Here it is used to show per product a description, version number, release date, link to manual + tips & faq + download. Of course, TWebContinuousScroll is also mobile friendly, meaning that it offers smooth touch based scroll. If you are curious about this new control coming to TMS WEB Core v1.4, you can explore an infinite list here. Don’t forgot to try it also from a smartphone and its touch scroll.

Responsive

It is a requirement that the web application is responsive for being recognized as a progressive web application. The core responsive behavior for TMS Subscription Dashboard is achieved by 2 controls: TWebMainMenu and TWebResponsiveGridPanel. For TWebMainMenu, via which the various parts of the application are opened, there is as a developer actually nothing in particular to do. It is as RAD as it can be. Drop a TWebMainMenu on the form and add your menu items and in a desktop browser, it looks & behaves as a Windows menu. When used on mobile device, it automatically converts into a hamburger menu. Then the TWebResponsiveGridPanel is used to make the application convert from a 2 column layout on desktop to a single column layout on smartphones. On desktop browsers, there is a left column that has the main menu items and a client aligned pane in the right column that displays the information. On a smartphone, the TWebResponsiveGridPanel transforms this into a single column layout with the hamburger menu on top to select the view in the single column layout. While the responsive behavior of the TWebResponsiveGridPanel is fully configurable, it already has standard settings to differentiate between smartphone, table and desktop browsers. Also here, maximum RAD.

Get started

When you purchased any of the following subscription bundles:

you can use your credentials and login.

To let even more customers explore the results of the capabilities of TMS WEB Core, we have also opened this for customers having purchased TMS VCL UI Pack or TMS WEB Core!

What’s next?

We have a lot of exciting ideas for future version of TMS Subscription Dashboard. This could include the integration of the push notifications that are supported by TMS WEB Core. Another idea is to host the TMS Subscription Dashboard in a native application with our new Edge Chromium based browser and add the necessary bridging to give it access to registry and local files for the version management of download products and launching install & uninstall. On a whole other level there is the idea to open-source and fully document the architecture and code of this application so you can learn about every little detail and apply what you learned for your applications. But what is actually most exciting is to hear about YOUR ideas, wishes, desires. We look forward to interesting discussions!

Oh and by the way …

While we created the whole TMS Subscription Dashboard in our beloved Delphi 10.3 Rio IDE with TMS WEB Core, we also have our ongoing development to bring TMS WEB Core for Visual Studio Code. So, we were interested to see if we would be able to open this project in Visual Studio Code with an internal TMS WEB Core version and work on the project from there. As you can see, it can open & succesfully compile the project. A huge difference in the Visual Studio Code environment is that the form designer is based on a real webbrowser view, so the form designer still has some glitches that need to be worked on to make the form designing a smooth experience. So, also here, eating our own TMS WEB Core food will be an interesting experience.

Read More

Read More

TMS WEB Core: Webanwendungen mit Delphi entwickeln

Lernen Sie in diesem 350-seitigen Buch die zahlreichen Möglichkeiten der
Softwareentwicklung mit TMS WEB Core kennen.

Seit mehr als zwei Jahrzehnten ist Delphi bekannt für die schnelle Programmierung von Windows-Anwendungen. Insbesondere die einfache Erstellung von Desktop-Datenbankanwendungen und die unkomplizierte Bereitstellung der Anwendungen auf Kundensystemen machten Delphi gegenüber anderen Programmiersprachen populär. Seit einigen Jahren kann Software für die Zielplattformen Linux, MacOS sowie die mobilen Betriebssysteme iOS und Android erstellt werden.
Mit TMS WEB Core können seit Anfang 2018 moderne Webanwendungen mit Delphi programmiert werden, die vollständig im Webbrowser ausgeführt werden, da die programmierten Anwendungen in JavaScript übersetzt werden.

  • Ausführliche Beschreibung der Grundlagen, der Funktionsweise und des Transpilers (basierend auf pas2js)
  • Schrittweise Erstellung der ersten Webanwendung
  • Progressive Web Applications (PWA) zur Offline-Nutzung
  • Electron Anwendungen: Plattformübergreifende Desktopanwendungen basierend auf Webanwendungen
  • Einbinden von JavaScript und JavaScript-Komponenten
  • Erstellen von Webservices für Datenbanken mit TMS XData
  • Einbinden von Datenbanken mit TDataset-Komponenten
  • XData-spezifische Funktionalität bei der Nutzung in Webanwendungen
  • Responsives Webdesign (Formulardesigner, HTML, CSS, Bootstrap)
  • Abschließendes Kapitel mit umfassendem und praxisnahem Beispiel mit
    Server- und Webanwendung mit Google Maps und Google Charts

Die Inhalte sind sowohl für Einsteiger als auch für fortgeschrittene Entwickler geeignet, die sich für die Erstellung von Webanwendungen mit TMS WEB Core interessieren.

Vorausgesetzt werden Kenntnisse in Delphi (Object Pascal) und der Visuellen Komponenten Bibliothek (VCL). Zum Reproduzieren der zahlreichen Beispiele benötigen Sie eine aktuelle Version von Delphi und TMS WEB Core. Die kostenfreie Delphi Community-Edition ist ausreichend sowie die Testversion von TMS WEB Core.

Eine englischsprachige Version ist in Arbeit und wird in den nächsten Wochen erscheinen. Die deutsche Sprachfassung ist weltweit auf allen Amazon-Shops verfügbar.

USA: https://www.amazon.com/dp/1090700822/

DE: https://www.amazon.de/dp/1090700822/

Holger Flick

Dr. Holger Flick studierte Informatik an der Universität Dortmund und promovierte an der Fakultät Maschinenbau der Ruhr-Universität Bochum.

Bereits seit 1996 programmiert er mit Delphi und war immerzu in der Community aktiv. Während und nach dem Studium arbeitete er als Freiberufler an zahlreichen Projekten für Borland und konnte sich so mit vielen Delphi Experten aus dem Scotts Valley in Kalifornien direkt austauschen. Hauptsächlich testete er Delphi für die QA Abteilung, programmierte aber auch Datenbankanwendungen und Webanwendungen für das Borland Developer Network. Auch auf Konferenzen und Seminaren hat Holger zu den verschiedensten Delphi Themen vorgetragen. Sein Engagement und seine umfassenden Kenntnisse im Bereich der Delphi Programmierung, erlangt durch seine jahrelange theoretische und praktische Arbeit im Themenbereich der objektorientierten Programmierung mit Delphi und anderen Programmiersprachen (z.B. C#, Objective-C), führte zu seiner Ernennung zum Embarcadero Delphi MVP im Jahr 2016. Von 2013 bis 2018 war Dr. Holger Flick bei der Korfmann Lufttechnik GmbH in Witten für die gesamte Software- und Hardwarearchitektur der Firma verantwortlich und entwickelte unter anderem unternehmensspezifische Softwarelösungen mit Delphi. Seit 2017 präsentiert er Produkte und Lösungen von TMS Software als Chief Evangelist in Form von zahlreichen technischen Artikeln, zweisprachigen Video Tutorials und führt durch Seminare.

Im Jahr 2019 gründete er FlixEngineering LLC und machte die Vereinigten Staaten von Amerika zu seinem neuen zu Hause.

Read More

Read More

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

Navvu は、ユーザーが選択した連絡先に正確かつ即座に現在地を送信および共有するために使用できる位置情報サービスです。これは、DelphiとFireMonkeyを使用していた高度に統合された機能密度の高いユーティリティです。Navuuには好きなものが たくさんあり、その機能の簡単な要約はその理由を示しています。 今日のクールアプリセレクションは、GK ConsultingのNavuuです。Navvuは、選択したコンタクトに対し、正確かつ瞬時に現在地を送信/共有できるロケーションサービス。Del...(read more)
Read More

Delphi Conference 2018 – Barnsten.com

I missed this one, so I was glad I archived it because I was curious for Daan van der Werf – Delphi op de werkvloer “Groothandel & Magazijn”. So here it is: [WayBack] Delphi Conference 2018 – Barnsten.com, with fixed and archived links where possible. Presentations and code from the Delphi Conference 2018 … 09:30-10:30 – Keynote: Marco Cantú – Product Manager Delphi – “Delphi 10 for Windows 10 and beyond” PDF Presentation:  [WayBack] https://www.barnsten.com/media/folder/DelphiConference2018_Keynote.pdf 10:30-11:30 – Brian Long – Creative Delphi Debugging Techniques PDF and source code: [Archive.is] https://www.dropbox.com/s/7ltxbyd0osvqsrb/Creative%20Debugging%20Techniques.7z?dl=0 11:50:12-40 – Brian Long – How to Access the Android API PDF and source code: [Archive.is] https://www.dropbox.com/s/gg6ve3zu9xxh1ju/How%20to%20Access%20the%20Android%20API.7z?dl=0 11:50:12-40 – Bruno Fierens – A RADically new way to develop modern web applications PDF presentation: [WayBack] https://www.barnsten.com/media/folder/DelphiConference2018_TMS.pdf 13:30-14:20 – Roald van Doorn – Continuous delivery with existing VCL Applications PDF presentation:  [WayBack] https://www.barnsten.com/media/folder/DelphiConference2018_Albelli.pdf 13:30-14:20 – Daan van der Werf – Delphi op de werkvloer “Groothandel & Magazijn” PDF presentation:  [WayBack] https://www.barnsten.com/media/folder/Delphi_Conference2018_TTI.pdf 14:30-15:20 – Danny Wind – Micro Services and Progressive Web Apps (PWA) Delphi Not available yet 14:30-15:20 – Bob Swart – Delphi en FireDAC Enterprise Connectors PDF and  [WayBack] source codes in zip file 15:40-16:30 – André Mussche – De opkomst van spraakherkenning PDF Presentation: [WayBack] https://www.barnsten.com/media/folder/DelphiConference2018_Ultraware.pdf Sources:  [WayBack] https://github.com/ultraware/DelphiGrpc Generator: [WayBack] https://github.com/ultraware/DelphiGrpc/tree/master-Generator 15:40-16:30 – Marco Cantù – RAD Server In Depth PDF Presentation: [WayBack] https://www.barnsten.com/media/folder/DelphiConference2018_RADServer.pdf Demos of the RAD Server session are at: [WayBack] https://github.com/marcocantu/DelphiSessions/tree/master/RADServerBeyondBasics –jeroen
Read More

Coming up in TMS FNC Core

Working hard! We are working hard on getting TMS FNC Core ready for the next update. It will include the TTMSFNCWebBrowser component that will support the latest browser technologies on various platforms. Microsoft replacing Internet Explorer/Edge with Edge Chromium (https://www.theverge.com/2018/12/4/18125238/microsoft-chrome-browser-windows-10-edge-chromium). Apple is forcing applications to switch to WKWebView for both macOS and iOS from April 2020 (https://developer.apple.com/news/?id=12232019b). For us, this was a signal to quickly start implementing these browser changes and make sure we offer the latest technologies Microsoft and Apple are pushing out. Choosing the TTMSFNCWebBrowser instead of the default TWebBrowser will offer you the best experience and worry-free applications for the future. Windows: Edge Chromium macOS/iOS: WKWebView Android: WebView All of the above operating systems are supported through various frameworks: FMX, LCL, VCL and WEB On the WEB it acts as a DIV which can load and handle HTML, execute JavaScript and many more. That's not all! Which each update of TMS FNC Core or other FNC products, we tend to add little gems hidden inside. The most important units that bundle all these little gems are *TMSFNCUtils.pas and *TMSFNCTypes.pas (* = FMX., VCL., WEBLib., LCL). For this blog, I wanted to point out a very nice class helper that allows you to generate JSON from an object, store/restore it, save it to a file or stream and even log it inside the debug console. TTMSFNCObjectHelper = class helper for TObject function ToJSON(AExcludedProperties: TTMSFNCObjectExcludePropertyListArray): string; overload; function ToJSON: string; overload; procedure FromJSON(const Value: string); property JSON: string read ToJSON write FromJSON; procedure Log; {$IFNDEF WEBLIB} procedure SaveToJSONFile(const AFileName: string); procedure LoadFromJSONFile(const AFileName: string); {$ENDIF} procedure SaveToJSONStream(const AStream: TStream); procedure LoadFromJSONStream(const AStream: TStream); end; This class helper will allow you to take any TObject descendant and generate JSON from it. Below is a little sample that demonstrates this. TTestClass = class(TPersistent) private FB: string; FC: Double; FA: Boolean; published property A: Boolean read FA; property B: string read FB write FB; property C: Double read FC write FC; end; var t: TTestClass; begin t := TTestClass.Create; t.FA := True; t.FB := 'Hello World!'; t.FC := 123.456; t.JSON.Log; end; Debug Output: {"$type":"TTestClass","A":true,"B":"Hello World!","C":123.456} Process Project1.exe (6968) A little more patience As already mentioned we are working hard on the update. There are a few things that need some more testing but as soon as that's ready the update will be released. We are eager to find out which components, libraries & little gems you are using inside your application, so you can always showcase that through email support.
Read More

TMS certified consulting partner: Kassebaum

Roman Kassebaum started to work with Delphi in 1996 after he graduated with a Master degree from the University of Paderborn. Since 2001 he is working as a freelancer. He is a Delphi MVP and an Embarcadero Technology Partner. During the last years he became a member of the great TMS team and is also a certified TMS Consulting Partner. He is a specialist in all kinds of Delphi projects including TMS Business components and the cutting edge TMS Web Core library for which he created the Delphi IDE integration.

Company history

  • Started in 1996 with Delphi and in 2001 as a freelancer.
  • Kassebaum is located in Bünde / Germany.
  • Kassebaum is a family business: Roman is supported by his wife and sons. The older one already studies Maths and Information Technology. The younger one currently builds web sites.

Rapid-fire with Roman…

  • Your main work?

    I’m converting components from older Delphi versions to the recent ones. People know me for the Turbo Pack components.

  • An example of your work?

    An example of my work is the IDE integration of TMS Web Core.

  • Which TMS components do you mainly use?

    I’m using TMS BIZ (XData, Sparkle, Aurelius and BCL), TMS Web Core, TMS IntraWeb and TMS PassKit.

  • Which operating systems do you use?

    I’m using the platforms Windows, macOS, Linux, iOS and Android.

TMS Partnership:

Roman started with 1 small project in collaboration with Wagner Landgraf. Seeing his great work and enthusiasm he was later involved in the TMS PassKit project.

And before he knew, he was a valuable part of TMS team and the IDE integration for TMS WEB Core was trusted to him!

Roman is not only a certified TMS Consulting Partner, but also a regular speaker at the TMS training Days.

Join our network

In May 2019, we’ve started our network of TMS certified consulting partners to make development easier for you. These are partner companies we know, have a long term relationship with and that we know have deep and expert level knowledge in Delphi and our TMS software component products.

We plan for extending our network of consulting partners in the coming months and years. If your organisation is interested in becoming such partner, feel free to reach out & discuss.

Visit the partners landing page for more information and details!

Read More

Read More

Happy Delphi 25th anniversary: follow hash tags #Delphi25 and #Delphi25th

I wish I could have prepared something more substantial for the 25th Delphi birthday. Alas: life has been tough (see below), so please keep an eye on these search terms, hash tags and start posts from past Delphi team key members: [Archive.is] #delphi25 hashtag on Twitter [Archive.is] #Delphi25th hashtag on Twitter [Archive.is] Danny Thorpe (@danny_thorpe) […] … Read More

Read More