Presentation Session Downloads

Most of my conference presentations involve sample projects and source code. This page contains the sample code associated with several of my presentations. I have grouped the presentations to aid in locating topics and I’ve included a short description of each presentation along with links to download the sample code.

Delphi Topics

User Interface Design with Actions

Actions have been a core feature of Delphi for quite some time, and have recently been added to the FMX framework. Unfortunately, this extremely powerful feature of Delphi is still widely underused and in many cases misused by developers. Learn how actions simplify user interface development in this session.

Sample Code

Actions.zip

Advanced RTTI in Delphi

RTTI has always been a core feature of Delphi. But until recently, it was complex and limited. Now, RTTI is significantly more powerful, and yet much easier to use as well. This session will describe in detail all of the changes that have been made and will demonstrate the new capabilities with several examples including field inspection, method invocation, and custom attributes.

Sample Code

AdvancedRTTI.zip

Effectively Using Generics in Delphi

The recent releases of Delphi include support for generics or parameterized types, which is a method of defining classes without specifying the exact data types that will be used in the class. The most common use of generics is in type-safe collection classes, but there are many other uses as well. This session covers the key concepts of generics, including new syntax changes, utilizing existing generic classes and interfaces, as well as creating new generic types.

Sample Code

DelphiGenerics.zip

Effectively Using System.JSON

The System.JSON unit that ships with Delphi implements the JSON Objects Framework, and contains classes and methods to store, parse, and generate data in JSON Format. The framework is quite powerful, but it can be a bit daunting. Through several examples, this session dives into the core classes while demonstrating how to handle a wide variety of JSON payloads.

Sample Code

System-JSON.zip

Delphi IDE Tips & Tricks

It is no surprise that RAD Studio developers spend most of their time working in the IDE. What is surprising is that many RAD Studio developers are not aware of many of the productivity features available. In this session, I highlight many of my favorite IDE tips and tricks including the QuickEdit Designer. Also covered are tips that focus on improving IDE navigation, tips accelerate code editing, others simplify form design, but all of them will enhance your IDE experience.

To use the custom keyboard templates, download the RaizeKeyboardTemplates.zip file and unzip the contents to C:\Users\<user>\Documents\Embarcadero\Studio\code_templates and then restart Delphi.

Sample Code

RaizeKeyboardTemplates.zip

FMX Topics

Customizing Controls with FMX Styles

Styles have always been an integral part of FMX. And while their role has evolved as mobile development has matured, styles are still a core facet of FMX that provides tremendous power and flexibility. This session demonstrates how to leverage styles to customize individual controls as well as the entire user interface. Along the way, we will learn how to effectively use the Style Designer, when to use multiple Style Books, and tips to make your custom styles look their best.

Sample Code

FmxControlStyling.zip

Data Visualization

Conveying the meaning of data quickly and concisely is a focal point of today’s applications. This is especially true for mobile devices where real-estate and user attention are in short supply. Delphi/C++ and the FM Application Platform, along with native code performance, provide the tools necessary to create vibrant, information rich displays. The paper associated with this presentation is also available for download.

Sample Code

DataVisualizationApps.zip

Managing FMX Views

One of the biggest challenges facing developers of mobile applications in Delphi is how best to manage multiple views. The TTabControl provides the basic mechanics of switching between views, and a common approach is to simply define each view on a page of the tab control. However, it is impractical to put all controls for all views onto one form. Another approach is to use frames for each view, but frames do not display mobile styles, and more importantly, it is very easy for inline instances of frames to become out of sync with source frames. Furthermore, neither of these approaches offer any support for view navigation. In this session, a new approach is presented that simplifies view management, facilitates view navigation, and isolates view definitions.

Sample Code

ManagingFmxViews.zip

Spice Up Your Apps with Animations

Animation has become an integral feature of modern applications. When used appropriately, animations engage users and help to maintain context. Fortunately, the FMX Framework has a sophisticated animation engine, which makes it easy for us to spice up our Delphi applications–even if they are just targeting Windows. In this session, we’ll dive into a variety of animation techniques including: property animations, composite animations, animation triggers, time codes, and tab transitions.

Sample Code

FMXAnimations.zip

Creating Custom FMX Controls

RAD Studio supports cross-platform user interface development with the FireMonkey framework. Like the VCL, FireMonkey is component-based, but unlike the VCL, FireMonkey is based around the concept of styles. As a result, creating custom FireMonkey controls is quite a bit different than create VCL controls. This session will provide you with what you need to get started building custom FireMonkey controls.

Sample Code

CustomFMXControls.zip

Effectively Using List Controls in Mobile Apps

Lists form the foundation of many mobile applications. The FMX framework provides two core list-based controls: TListBox and TListView. And the TListView control has seen many enhancements in recent Delphi releases. This session investigates the advantages and disadvantages of both controls and how to use them effectively in your mobile applications for optimal user experience and performance.

Sample Code

MobileListControls.zip

User Interface Design with FMX Styles

Styles have always been an integral part of FMX. And while their role has evolved as mobile development has matured, styles are still a core facet of FMX that provides tremendous power and flexibility. This session demonstrates how to leverage styles to customize individual controls as well as the entire user interface. Along the way, we will learn how to effectively use the Style Designer, when to use multiple Style Books, and tips to make your custom styles look their best.

Sample Code

UI-Design-with-FMX-Styles-Samples.zip

VCL Topics

Component Building Fundamentals

Components are the building blocks of Delphi. Every aspect of Delphi has been impacted by components: the language, the IDE, and of course, the component frameworks. Learning to build components provides a deeper understanding of how Delphi works. This section focuses on the fundamental techniques required for building robust Delphi components. Topic covered include the component model, choosing the best ancestor, event delegation, and proper package organization.

Sample Code

RaizeSamplesVcl.zip

Creating Composite VCL Controls

This session investigates the various techniques involved in creating composite controls including manual creation, component templates, frame components, and sub-components. Along the way, guidelines for the effective use of each technique will be presented along with the advantages and disadvantages of each approach.

Sample Code

CompositeVclControls.zip

Creating Custom Title Bars in VCL Apps

Delphi 10.4 Sydney introduced a brand new control, TTitleBarPanel, along with the new CustomTitleBar property on TForm that allows a developer to customize a VCL form’s native title bar similar to Windows Explorer, Google Chrome, and others. This session will illustrate how to use the TTitleBarPanel component to significantly enhance an applications main form. Additional topics will include caption buttons, control layout, and custom painting.

Sample Code

CustomTitleBars.zip

Creating Custom VCL Designers

This session focuses on enhancing the design-time interface of a component by creating custom design editors. Specifically, you will learn the details of creating custom property editors, component editors, and other design-time elements. In addition, through several examples, you will see how these building blocks can be used to dramatically enhance the usability of a component.

Sample Code

VclDesigners.zip

Creating Custom VCL Styles

Leveraging VCL Styles has become more popular after Embarcadero added support for High DPI and per-control styling. Embarcadero even provides several VCL Styles that you can use to enhance the look of your application. The built-in styles are okay, but what if you want to change some aspect of an existing style? For example, what if you want to change the accent color, or the appearance of check boxes and radio buttons? What if you want to create a completely custom style? The Bitmap Style Designer is the tool for the job, but the designer is definitely not easy to use and there are a lot of factors that must be considered when creating a custom VCL style. This session will cover everything that you need to know to create a custom VCL style like a pro. Plus, learning how to create a custom VCL Style will help you identify problem areas you may encounter when applying a VCL Style.

Sample Code

CustomVclStyles.zip

Creating High DPI VCL Components

For the past few releases, Embarcadero has continued to improve support for developing High DPI applications. In the process, several low level changes were made to the VCL itself to allow components to support high DPI. However, supporting High DPI in a custom component is not automatic and often requires additional tweaks and adjustments. This sessions dives into the details of providing full support for High DPI in custom VCL components.

Sample Code

High-DPI-Components-Samples.zip

Skinning VCL Applications with VCL Styles

VCL Styles enable VCL Applications to support skinning. That is, the ability to dynamically change the appearance of user interface elements without coding changes or recompiling. This session illustrates how to leverage VCL Styles, avoid potential problems, add support in custom controls, and even create a custom VCL Style.

Sample Code

VclStyles.zip

Supporting High DPI Displays in Delphi

Delphi 10.3 (Rio) includes new features specifically designed to provide better support for High-DPI displays. Features such as the new TImageCollection and TVirtualImageList components, support for Microsoft’s Per Monitor V2 mode, and new High DPI related RTL functions. This session dives into each of these topics and provides details on how best to use these new features in your apps.

Sample Code

HighDPIinDelphi.zip

VCL Style Changes in Delphi 10.4

The recent release of Delphi 10.4 Sydney includes a number of significant changes to VCL Styles. Most notably, the VCL Styles architecture has been significantly extended to support High DPI and 4K monitors. Plus, developers can now use multiple styles simultaneously in their VCL apps, even on the same form with new Per Control Styling support. This session will dive into the details of these changes and illustrate how to get the most out of VCL Styles. While this session is geared towards application developers, component developers will find the discussion of new Style API changes especially valuable.

Sample Code

VclStyleChanges.zip

CodeSite Topics

Sending Custom Data in CodeSite

CodeSite supports logging a wide variety of data types, but not every data structure can be automatically recorded. Fortunately, CodeSite supports logging custom data types with the help of Custom Data Formatters. This session will show you step-by-step how to build your own custom formatters for sending custom data in CodeSite.

Sample Code

CodeSiteCustomData.zip

CodeSite JSON Logging

Recent versions of Delphi added support class helpers. In this download, the TCodeSiteLogger class is extended by adding a class helper that provides a new method for logging JSON data in a structured format.

Sample Code

CodeSiteJsonLogging.zip