Holger's Helpers #1

Multi-Tier example for Customer Contact Forms

   Watch Promo


It’s awesome if you have learned all about a certain piece of technology: a new framework, a new component, a new version of Delphi… However, what good are all these technical details if you are not able to put them to use in your projects?

Welcome to a video course series that teaches using a real use case! Real-world Building Blocks will focus on topics that you might need sooner or later for one of your software development projects.

Nicely paced video tutorials that deal with one certain task or example that will serve as the base for functionality that can be added to your application. Holger’s Helpers will lift you over the edge to get to apply new technology. Theory is wonderful, but practice makes us all better software developers.

Contact Form Example

Your customers need an easy means to get in touch with you. E-Mail is still the best tool to get the job done, however, tracking an email in a team might be difficult. Thus, a lot of companies use contact forms or support request forms to give their customers the opportunity to reach them.

The first tutorial will explain the multi-tier architecture needed to build a customer contact form or feedback form. You will be able to customize it to your specific needs afterwards.

All parts of the multi-tier projects will be covered in detail and source code will be explained step-by-step:


A relational SQL database will be used. MySQL in this case. I will even provide a Docker Compose file so you can start right away without having to install a database server.

Web Application

Customers have to be able to leave feedback. What better way to offer a Web application that can be used on any device that supports a Web browser? TMS WEB Core will be used to make this happen. We will develop multiple applications starting with a very simple Web Application that will then become a modern, responsive Web Application using Bootstrap.

Management Windows Application

Requests need to be dealt with somewhere. For this purpose, we will build a VCL Windows Desktop application. You can filter to look at certain requests and can generate a reply E-Mail and archive requests that you have dealt with.

Web Service API

All these components communicate with each other through a Web Service API. This also opens up your whole architecture for further applications. For example, creating reports or adding a workflow with additional states for each contact request that you receive.

In a nutshell

I hope you see that this somewhat simple example already poses a lot of challenges. The basic definition of the use case offers a maximum of flexibility for you to extend and customize this.


  • The course consists of 4 main sections plus introduction and other additional sections.
  • The run-time of the course is almost five (5) hours.

The main sections are structured as follows:

Scenario and use case

Detailed description of the scenario and getting to know the different parts of the software project.

Building the back end (Web Service API)

Building the data model and the Web Service API will be shown in detail. A template that is built during the XData course will be used as a foundation to save time and effort to get the ball rolling.

Building the front end: Web Applications

Several Web applications implementing the same feature will be presented. First, a simple application using visual controls without making use of any Web technologies will be built. The application will be built quickly but will lack a responsive design and will also not be showing informative error messages. The next iterations of the application will remedy these defects. All in-between projects are available with full source code.

Interlude: Building a design-time component

The class to connect your VCL desktop applications called `TXDataClient` is only available in code. We will build a component that you can drop on the from instead in this section. This will give you a great look into Delphi how to build wrapper components for existing classes.

Building the front end: Windows Desktop Application (VCL)

In this section, you will develop a VCL desktop application that connects to the same Web services as the Web application. However, the desktop application will take the administrative role. Thus, the Web services will be extended using more complex SQL queries and storing user specific data in the database. This app closes the circle to have the whole scenario covered.


  • This course is designed for the Delphi programming language. It is recommended to use one of the recent Delphi versions. All source code is only tested using Delphi 11.
  • The multi-tier architecture is built using software from TMS Software. TMS WEB Core and TMS XData will not be introduced. You should have basic knowledge and be able to implement Web Applications with Web services when starting with this course. Landgraf.dev offers video courses for these products.
  • If you add this product to the cart, an offer to purchase my XData course at a high discount will become available.
  • Controls that are part of TMS VCL UI are used but can be replaced with other controls. The key concepts of this course are not depending on UI controls.

Source code

Source code will be provided as download and as a private GitHub repository. Please contact me using email after purchase to get access to the private GitHub repository. The source code is free to use and modify if you have purchased the course. It is part of a lecture and can be accessed if you access the lesson "Contacting Holger & Downloading Source Code". If you watch the video in full screen it will not be visible. Please minimize the video and a button to download will appear.

Course Curriculum

  Scenario and use case
Available in days
days after you enroll
Available in days
days after you enroll

Frequently Asked Questions

When does the course start and finish?
The course starts now and never ends! It is a completely self-paced online course - you decide when you start and when you finish.
How long do I have access to the course?
How does lifetime access sound? After enrolling, you have unlimited access to this course for as long as you like - across any and all devices you own.
What if I am unhappy with the course?
We would never want you to be unhappy! If you are unsatisfied with your purchase, contact us in the first 30 days and we will give you a full refund.
Why does one of the samples not compile and what is "FastMM5"?
Please remove the reference to FastMM5. I have also updated the source code. FastMM5 is a different memory manager for Delphi and not part of this course. I use it myself and the reference was added by mistake.

Your Instructor

Dr. Holger Flick
Dr. Holger Flick

Get started now!