VCL: the bridge to the future

ctodx
10 July 2012

Look it’s ridiculously simple. DevExpress started out with VCL user interface controls and, despite everything that has happened in the thirteen-and-a-bit years since, we are still very much in that market: the biggest vendor, with the widest breadth of controls and functionality. Not only that, but we’re just about to publish possibly the best release in years: VCL Subscription 12.1.

Architectural plansLet’s start off with the highly visual. We’ve added a tile control that is inspired by the new Metro look-and-feel of Windows 8. What we’ve found with our WinForms version is that a tiled front page to your application produces a very versatile dashboard-type view. Some of the tiles contain static content and some are “live”, where the content automatically changes through several frames of animation. As a user, your instinct is to “touch” the tile you are interested in, either with a traditional mouse cursor, or, if you have a touch-enabled screen, touching the screen itself. You can rearrange the tiles by dragging and dropping the tiles on the screen. The user experience is very fluid and graceful.

As a developer, you can reinforce the dashboard metaphor by wiring up the click events of the tiles to “drill down” and show more information that is relevant to each particular tile. So, for example, if you are showing total sales in a tile, touching the tile will show a different screen (preferably by sliding it in from the side) that shows more information about the total sales, say using a grid with some charts. The ability for the user to rearrange the tiles into an order that is more relevant to their work empowers them, they become more invested in the application.

Another point I want to emphasize about the tile control is that it is a pure VCL control, written in Delphi. There’s no magic, just the traditional DevExpress pixie dust. That’s why we say the control is “inspired” by Metro’s UI. It’s a chance for you to bridge tomorrow’s inevitable move to Windows 8 and Metro by introducing your users today to the concepts of tiles and how they work. We think they will be delighted.

We realize that a lot of this is brand new, so please check out the Realtor World demo application we provide with VCL Subscription 12.1. You can see the functionality I’m describing and, because it is a demo app, you have the full source code. Open up the project in RAD Studio and browse the source. Better still, use the demo app as a template for your own app: go ahead and delight your users.

On to the next big feature we’ve added to VCL Subscription 12.1. This time it’s not a visual feature, nevertheless it can improve the user experience of your application significantly. I’m talking about Server Mode for the ExpressQuantumGrid.

Given the feedback from some of our customers, an explanation may not be needed but allow me to expand a little on what Server Mode is. Traditionally, the grid has operated like this: when the grid is first displayed, the grid engine fetches all the records from the database. It stores this data in memory and uses it to provide the various user manipulations needed, including paging, sorting and grouping. As you can imagine this initial data fetching can take some appreciable time if there are thousands or millions of records and the memory requirements are massive.

With Server Mode, the grid has been enhanced through the use of some helper classes to fetch only the data needed for the current view. Conceptually (actually, our Server Mode is optimized even more than this basic description illustrates), the grid only fetches the number of records required for the current view. If the user pages down to see the next rows, the grid fetches another set of records right there and then. If the user sorts on a particular column by clicking on it, the grid merely fetches the first few records of the new sort order: the database engine is solely responsible for doing the ordering. In essence, the grid and its new helper classes are crafting SQL statements on the fly to fetch just what is needed for the current grid view.

This then is Server Mode: the initial display of the grid is much faster but each subsequent page display may be slightly slower (since it could require a round-trip to the server), and the memory usage is reduced. Overall though, your users will perceive a much smoother experience.

For 12.1, we are providing support for the big database engines: Microsoft SQL Server, MySQL, Firebird, Interbase, and Oracle. Other databases will be supported in future releases. The current support is for read-only data; read-write capabilities will be forthcoming.

Of course, there are many other new features and changes in 12.1. There’s the new high-speed paint mode for the skins that doubles the speed of painting elements and is more compatible with terminal systems and low-color modes. We’ve improved the performance of the layout control for complex layouts. We’ve added color galleries that can also be used as color editors. We’ve improved the Ribbon control with several new much-requested features. And so much more. You can view the whole What’s New in 12.1 here.

Crystal Ball time

Having produced this new release, let me reveal a little about what we’re planning (or not) for 12.2. Remember, we are resource-constrained with regard to supporting Delphi and C++Builder, and so we have to pick and choose what we want to – and are able to – implement.

First of all, as everyone who uses RAD Studio knows, Embarcadero usually follow an annual cycle for major releases. If this year is no exception, that means XE3 is some three months away. Nothing official has been said about this release yet (apart from JT’s blog post about C++Builder, of which more in a moment), but we can imagine that there’s going to be a lot of news about FireMonkey and support for various platforms. I doubt there will be much about VCL.

If we assume that XE3 is due this half, we’ll need to trim the supported IDEs again: 12.1 will be the last version to support Delphi and C++Builder 2010. I will sound a further note of caution: it’s likely that in 2013 we shall drop support for Delphi 7 and Delphi 2007 (what you might call the “ASCII IDEs”), so that we can concentrate on the latest run-times and environments.

I’ll be the first to admit that FireMonkey has come on by leaps and bounds since its not-very-complete release last September, so I dare say it’ll be that much better in XE3. Consequently, we shall be doing some investigations creating controls for it, especially for iOS. At this point in time though, it’s unlikely we shall invest in replicating what we have in VCL for FireMonkey to target, say, the Mac.

With regard to a 64-bit C++Builder that is to be built with Clang/LVVM, I’m going to say we shall treat it with kid gloves. Re-engineering a compiler so fundamentally says “breaking changes” to me, especially given the necessary extensions that are present in the current C++Builder to interface with Delphi. So, fair warning: if the changes are too severe, we shall not support 64-bit C++Builder in 12.2. It took us long enough to support 64-bit Delphi across our entire product line, and this year we don’t have the resources. That doesn’t mean we won’t ever do this (after all, Embarcadero are saying that they’ll switch completely to Clang/LVVM at some point), just that we won’t this year.

For VCL, expect more enhancements to Server Mode, including read/write capabilities. Expect more touch enhancements. Expect some larger scale features. We are of the strong belief that VCL has a lot of life yet, and we shall continue to bridge your current expertise to fit the future. Let’s see what develops!

Free DevExpress Products - Get Your Copy Today

The following free DevExpress product offers remain available. Should you have any questions about the free offers below, please submit a ticket via the DevExpress Support Center at your convenience. We'll be happy to follow-up.
No Comments

Please login or register to post comments.