This Blog


Favorite Posts


  • RAD Studio XE8 has been released

    Hand with WrenchI’m quite sure that if you are an Embarcadero RAD Studio fan, you know that XE8 was released yesterday. According to the email from Embarcadero notifying me, it was released at 12:01am – cue an old story my Dad used to tell me that the British Army never planned anything for 12:00am or 12:00pm because no one knew which one was noon and which one was midnight. Whereas one minute past the hour? No problem.

    Anyway, if you’ve already downloaded and installed it, you may be turning to DevExpress to see whether the latest release of our VCL Subscription supports it. Coincidentally, we released v14.2.5 of the VCL Subscription overnight too. Unfortunately, our releases clashed and v14.2.5 does not have that all important support for XE8. (After all, we get the new version of RAD Studio at roughly the same time as everyone else.)

    So this is a placeholder post to say, yes, we’re now testing our VCL code against the official RAD Studio XE8 release and, yes, you will be getting that support in a few days in a new minor version – v14.2.6 – of your active subscription. Stay tuned!

  • WinForms Layout Control: Usability Enhancements

    As you may know – and in my opinion, should know: it’s a great, time-saving control – the Layout Control provides rich design-time and runtime customization capabilities, giving you and your users the ability to easily arrange controls in the way you want, to resize and hide controls, to specify the alignment of prompts, and so on.

    Traditionally, the customization features are activated using a context menu. This menu can be opened by either right-clicking a control's label or padding, or some empty space within the Layout Control itself. If, however, the controls within the layout container are displayed with no or little padding or no labels, or worse there is no empty space at all, it makes difficult for you and your users to activate the customization menu. In such layouts (an example is shown below), you’re forced to engage in some deft “pixel hunting” in order to locate a point where a right-click invokes the customization menu. And we know how annoying that can be.

    Layout form with no spare padding: where do I click?

    Worry no more as we have introduced a new Quick Runtime Customization mode and a few usability enhancements in v14.2.6 (yes, in a minor release!) to help with that pixel hunting issue.

    Quick Runtime Customization

    The Quick Runtime Customization mode, just like the default customization mode, provides a full range of customization actions, available in a touch-friendly customization form.

    To activate this new mode, users have to press and hold a finger (on touch devices) or right-click and hold (using a mouse) within the Layout Control's bounds (including areas occupied by other controls). Quick mode initialization is visualized with an animated load indicator.

    Layout Control: quick runtime customization

    Note that the customization buttons are context dependent.

    Design-Time Glyphs and Improved Resizing

    We have addressed the design-time "pixel hunting" issue by introducing design-time glyphs. Two glyphs are displayed once an embedded control is selected. The first glyph Design-time glyph for dragging allows you to perform item drag-and-drop operations, while the second glyph Design-time glyph for context menu can be used to invoke the layout item's context menu.

    We have also improved layout item resizing. The capability to resize items with no padding has been added.


    Alt + Dragging

    This enhancement addresses a potentially inaccurate insertion of an item during drag-and-drop. This can happen when the target location may be hidden underneath the item being dragged. With this change, an item being dragged can be temporarily made transparent by pressing and holding the ALT key. This allows you to clearly see the target position.

    Using Alt+Dragging

    As I’m sure you can see, these small changes will provide a large improvement in usability. Check them out in v14.2.6, available any day now. Feedback on these enhancements is welcome: just comment on this post or send me an email at julianb@devexpress.com. The team would love to hear from you!

  • Using JavaScript in WebForms apps? Have I the webinar for you…

    Yes, I know, I know: you could probably get away without doing any client-side programming in your ASP.NET WebForms app. Back when I started writing web apps some dozen years ago, that’s exactly what I did. I even remember finding this little snippet of JavaScript that would force the caret into the first text field on the page when it was displayed, and using it all the time and virtually nothing else. Ah, those were the days.

    These days, it’s different. JavaScript is all grown up now. Yes, you can still find those blog posts about what you get from adding two empty arrays together (“What’s [] + [] equal?”) and other peculiarities of the language, but real JavaScript devs have moved on, have established a set of best practices, and are creating real client-side experiences with the language everyone loves to poke fun at.

    So, next Tuesday at 10:00am Pacific time, I’m presenting a webinar on using JavaScript inside your ASP.NET applications. We’ll be doing some refactoring, writing some new code, creating closures, and other things that will show you that JavaScript is a language force to be reckoned with, even in that ASP.NET app. Register here now.

    BatmanSlapsRobin-UseStrictOne of the best practices I’ll be describing almost in passing is the use of strict mode – or should that be, the strict use of strict mode. I’m talking about putting this construct at the top of your functions (or even better, at the top of your JavaScript file):

    "use strict";

    Since I won’t be talking about it too much in the webinar, here’s what strict mode is all about. Put at its most succinct, it helps you avoid certain mistakes and errors in your JavaScript (see above where I quickly mentioned the peculiarities of the language).

    Strict mode changes common mistakes into errors

    The biggest example here is creating global variables by mistake. You’re deep in some function and you need to store some value in a new variable. In the heat of the moment, you forget the var keyword.

        var closeWidget = function(index) {
            panel = controlList["dpw" + index];

    The code seems to work, but in reality you have created a bug. The panel object here is created as a global variable. It is visible elsewhere in the application. If someone else created a global variable called panel – after all web apps are created in teams of more than one person – you’ve just clobbered their version. And so on. Globals are bad, creating one is easy by mistake, but strict mode throws an error at run-time if that code gets executed. (Mind you, a good lint program would find it too.)

    Similar to that is properly declaring a local variable (Hurrah!) but misspelling it as you assign to it (Boo!). Result: another global variable is created with the misspelled name.

    Other examples of mistakes that are invisible in normal code but that will throw in strict mode are assignments to non-writable variables. Yes, in non-strict mode these types of assignments will seem to work, but won’t actually do anything. Wouldn’t you rather get an exception than total silence on this kind of mistake? Examples are assigning to a non-writable property, a property that only has a getter, a new property on a non-extensible object.

    Ditto delete-ing something that cannot be deleted.

    Property names on an object must be unique (I didn’t even now that non-strict mode allowed this). Saves you against inadvertent typos.

    Parameter names in a function declaration must be unique. Again saves you from your typos.

    No octal syntax for number constants. That is number constants can’t start with a ‘0’. Seems too many new devs have never used octal (blimey, I haven’t in twenty years or so) and so were completely bamboozled when something like 0123 was actually interpreted as 83.

    Strict mode simplifies uses of variables for optimizations

    Using with is disallowed. As it should be. Hated it in Pascal/Delphi, it’s worse in JavaScript. Brrr. Thanks, strict mode!

    There are some changes to how eval works. In particular, new variables introduced by the code being evaluated will not appear in the surrounding scope. In normal mode, they are and can overwrite outer scoped variables. Which, you must admit, is a bit of a security problem.

    Strict mode makes arguments simpler to use

    In essence, strict mode stops you doing stupid stuff with the arguments pseudo-array. I hardly use it anyway, so haven’t run into any of the things strict mode forbids. (Reminds me though of a daft blog post I read recently that so enjoyed doing stupid stuff with arguments.)

    Strict mode helps secure JavaScript

    The this variable is no longer guaranteed to be an object. Strict mode will, in certain cases, make this be undefined. This has bitten me mildly before: I used to assume that IIFEs when called had this as the global object. This “strict” behavior also avoids unnecessary boxing of primitive types.

    It is no longer possible to “walk the stack” since strict mode makes accessing the caller property illegal. Goes along with the changes to arguments to make JavaScript more secure.

    Strict mode looks to the future

    The list of reserved keywords is larger in strict mode. This means that your identifiers now won’t clash with keywords from later JavaScript versions. Things like implements, interface, let, package, private, protected, public, static, and yield.

    Function statements must appear at the top of a script or function. Not something that’s bitten me personally, since I don’t use function statements, but buyer beware.


    All in all then, strict mode introduces a set of logical restrictions to the language designed to help you avoid common mistakes and errors and to prepare you for newer versions of JavaScript. I recommend wholeheartedly using strict mode (as well as a lint static analyzer) in all your JavaScript code. Most of all, you should register for my webinar.

  • UI Superhero Story: Mike Palgon

    A couple of months ago, our videographer, Jeff Cosby, went to interview Mike Palgon about his experience with DevExpress ASP.NET controls in creating a website for an organization that helps cancer survivors. Here’s Jeff’s story:


    UISuperhero - Mike Paglon

    Meet Mike Palgon. He’s a web developer and long-time customer of DevExpress, and he works for HIMformatics, a Healthcare Information Technology consulting firm. We wrote up a case study on Mike a few years back and we recently caught up with him in Atlanta to check out a website he redesigned using DevExpress ASP.NET. The website is cancersurvivorlink.org and it serves three main functions. First, it’s a place for people to go learn about childhood cancer survivorship. It has a deep knowledgebase along with hundreds of links for users to find out everything from treatment to other support programs. Second, it allows users to upload and store their health documents, so they’re kept safe and in one central location. And finally, it allows users to share those documents with their healthcare providers in order to get the best possible care moving forward. Mike used our ASP.NET suite of controls to help with functionality and development time.

    Watch this video to learn more about how the website and how Mike built it.

    Join us in helping these organizations move forward with a donation today!

    Children’s Healthcare of Atlanta Children's Healthcare of Atlanta is a not-for-profit organization that provides specialized care to kids from all walks of life.

    CURE Childhood Cancer CURE Childhood Cancer is dedicated to conquering childhood cancer through funding targeted research and through support of patients and their families. (See more here.)

    Camp Sunshine Camp Sunshine provides programs throughout the year to give children with cancer the opportunity to enjoy normal activities like swimming, horseback riding, arts and crafts, and making friends!

  • WinForms Layout Control: Design-time templates

    As with all matters in development, oftentimes we find ourselves building a user interface or part of a UI that is remarkably similar to something that we’ve just built. To avoid the repetition – in code, that is – we have had up to now several strategies:

    1. UserControls. This is certainly a viable solution if you have exactly the same UI that you want to reuse. If not, then it’s more work than it’s worth.
    2. Code generation. This works pretty well (I’ve done this before in my dim and distant past, for example), apart from one drawback: you don’t get to see your UI at design-time.
    3. Visual Inheritance. Man, if you go this route, good luck. This just smacks of over-engineering to me; I think I’ll stick with UserControls.

    The new version of the DevExpress WinForms Layout Control in v14.2 provides another much simpler way: design-time templates. This new feature allows you to save frequently-used layouts as templates and then be able to reuse those templates when necessary in your projects.

    As an example of how this works, let’s create a compound waybill form that shows the need for some UI reuse. Here’s what we’re aiming for:

    WinForms Layout Control: Example Waybill Form

    Notice that the “SHIPMENT FROM” and the “TO – CONSIGNEE’ sections are very similar: they both have addresses, and also similar ‘name’ fields.

    We proceed as normal when using the Layout Control by adding groups. When we get to the “SHIPMENT FROM” group we design it as normal, but before moving onto the group underneath which is very similar, we right-click the group we just created and select Create Template. Enter a unique name for the template and save it: you now have a reusable template in your repository. (All custom templates thus created are stored in the %Public%\Documents\DevExpress\XtraLayout\UserTemplates folder as XML files.)

    WinForms Layout Control: creating a template

    We’re now ready to use this new template. We go to the LayoutControl’s Customization Form and switch to the Templates tab. Locate the template in the list and drag it onto the form. The Customization Form allows you to see a preview of the template before we use it.

    WinForms Layout Control: Using a custom template

    Once the template has been dropped onto our form, we can customize the layout as desired, so changing the title to “TO – CONSIGNEE” and rearranging and re-captioning a couple of other fields.

    If you find that even creating a template is too much of a nod to reuse (you only want to reuse a particular layout once, for example), then we have also improved the copy/paste functionality of the Layout Control. In essence, select the group you wish to duplicate, press Ctrl+C to copy it, and then Ctrl+V to paste it. (In actuality, this shortcut is also based on the new templates feature, but the template created is not persisted.)

    Please note that the templates mechanism is version-agnostic. You can create templates in one version of the DevExpress WinForms suite and continue to reuse them in subsequent versions.

  • Silverlight’s future at DevExpress

    Over the past year, it has become increasingly apparent to the Microsoft development market that Silverlight has become sidelined. Silverlight 5, the current major version, was released December 9, 2011, three years ago. Apart from a series of minor updates occurring at roughly 6 month intervals, the only code changes have been security updates propagated through Windows Update. Compare that with the rapid-fire releases of Silverlight 1 through 4 (Sep-07, Oct-08, Jul-09, Apr-10) and you soon begin to wonder what Silverlight’s future portends.

    Driving on road towards the setting sun © rasica - Fotolia.comNow, first things first: Microsoft have provided a standard Product Lifecycle for Silverlight that states, in summary, Mainstream Support for Silverlight 5 will end on December 10, 2021. (Support for Silverlight 1 – 4 has already ended.) That’s the official news.

    Apart from that, there is no real explicit news about Silverlight’s future. Last month, when Microsoft were open-sourcing .NET Core 2015, talking about Visual Studio 2015 and ASP.NET vNext, and providing early bits for testing, there was a blog post detailing a roadmap for WPF, but, tellingly, there was nothing about Silverlight. For all intents and purposes then, we are left with the impression that Silverlight is in maintenance mode.

    From my viewpoint, I’d say this: the overall strategy of the web application market is moving away from the requirement for browser add-ons. It’s HTML5 and JavaScript and client-side controls and web services and simple deployment and the cloud. Not that Silverlight can’t do any of the latter things, but it’s no longer what the market is steering towards. Application frameworks like Silverlight and Adobe Flash have had their day: HTML5 and JavaScript are rapidly becoming the de-facto web application framework. This is especially so when you consider the burgeoning market for responsive/adaptive web apps that target tablets and phones: there’s no Silverlight there. We are clearly seeing this trend in our own sales statistics too: throughout 2014 it’s been obvious to us that customers want to write web apps but don’t want to write Silverlight ones.

    The one thing about Silverlight that is still valid today and into the future is XAML. From its early beginnings in WPF and Silverlight, XAML has grown into a cross-platform user interface definition language. We now use it for WPF, WinRT, Windows Phone, and soon-if-not-now Universal Apps. The legacy of Silverlight the framework is essentially Windows Phone, but that of XAML is across all platforms.

    Based on this analysis, we made the decision to put our Silverlight controls into maintenance mode as well – in fact, we have already forked the code. We will not be providing any new functionality for our Silverlight controls but will provide maintenance updates to fix any issues as and when necessary. We have already stopped selling DevExpress Silverlight as a separate product (either as a new subscription or as a maintenance subscription) and it is now only available as part of DXperience or Universal.

    We regret having to make this decision, but we feel our XAML development expertise and resources are going to be better spent in the future being targeted at WPF, WinRT, and Universal Apps. As always we welcome your feedback about our future strategy, so please feel free to email management@devexpress.com or comment below.

  • DevExpress VCL: Improvements to grid, maps, and spreadsheet (coming soon in v14.2)

    A quick trio of improvements to the DevExpress VCL Subscription…

    VCL Grid Control

    As part of v14.2, we've added a Find Panel to our grid control, the ExpressQuantumGrid. This enhancement is dead simple for your users: to find some text in the dataset being shown in the grid, they simply enter the search text in the Find box and the grid will display those records that have matching values. What could be simpler?

    DevExpress VCL v14.2: Find Panel in Grid

    From your side, it's still pretty simple: there is a set of options available to control the display and behavior of the Find Panel. You can specify which columns are to be searched, choose between delayed automatic and manual search modes, allow search strings to be highlighted within located records, and so on. The Find Panel is available within all grid Views, except for Chart Views.

    VCL Map Control

    DevExpress VCL v14.2 adds support to the map control for:

    • Bing Maps services (Geocode and Routes)
    • Location-based queries to Bing Maps services
    • Shapefile format files

    DevExpress VCL v14.2: Map Control Routes from Major Roads

    This example shows route planning with Bing Maps as the provider using major roads.

    DevExpress VCL v14.2: Map Control Shapefile Format

    And this is an example of using the new shapefile support.

    VCL Spreadsheet Control

    In this release we’ve added the capability for the spreadsheet control to read and save print settings in spreadsheet files.

    We’ve also added support for arrays in formulas, together with their visual representation:

    DevExpress VCL 14.2: Spreadsheet Control Array Formulas

    So have at it with sets of disjoint ranges in your formulas!

  • DevExpress VCL: New Rich Edit Control CTP (coming soon in v14.2)

    As I’ve said many times now, if you want to guess what will be coming in future versions of DevExpress VCL, all you have to do is look at what our .NET teams have been adding to their suites right now. And this next new control fits the pattern exactly: let the .NET teams work out all the issues, then port the control to Delphi.

    I am delighted therefore to announce the new rich edit control for VCL. Think of all the features you take for granted in Microsoft Word, but wrapped in a new Delphi-coded rich edit control, designed to work seamlessly with the other UI controls that are part of DevExpress VCL, such as the ribbon.

    DevExpress VCL v14.2: Rich Edit Control

    The initial version in v14.2 of this important control is marked as a CTP (Community Technology Preview). It’s nowhere near complete yet, but forms a good basis for adding new functionality – such as tables, more Actions (see below), and so on – that we’re intending to address over the next few months. It ships in v14.2 with the following essential features:

    • Character and paragraph formatting
    • Image support
    • Styles
    • Lists (bulleted, numbered and multilevel)
    • Undo/Redo history
    • Clipboard operations (cut, copy, paste)
    • Overtype mode
    • Text highlight
    • Visual formatting marks, if needed

    Not only that, but we’ve added a command API so that you can completely manage the operation of the control. This is done through the use of Action objects. By linking these Action objects to elements of your UI, such as ribbons, menus, and toolbars, you can easily create a powerful word processor in your application.

    (Note that this control is marked as a CTP beta for v14.2. Although you can use the control as is, please be warned that it will change over the next few months as we polish and add to it. Properties, methods and events may – will – change for the final release. Also, currently the control is for 32-bit applications written in Delphi and only supports the RAD Studio XE series. Although a  64-bit version is in the works, we will not be back-porting it to RAD Studio 2010. It is only available in the full VCL Subscription.)

  • DevExpress VCL: Camera control, Toggle switch editor (coming soon in v14.2)

    Among all the major new features, we found the time to add a couple of new smaller controls to DevExpress VCL v14.2.

    The first is a fun control, directly from customer feedback: the Camera Control. This control allows you to incorporate the camera on your device (say the camera on your Windows tablet, or the webcam on your laptop) into your application. For example, you have an app for insurance assessors and you want the app to be able to take photos of some property that’s being claimed on. Incorporate the new camera control, and your users are ready for action.

    DevExpress VCL v14.2: Camera Demo App Screenshot

    It even works with more than one camera – say you have a tablet with front and back-facing cameras – and as shown here I’ve tested it on my laptop that has both a built-in webcam and an external Logitech camera (held in my hand, as it happens).

    The second smaller control is a modern tablet-style toggle switch editor.

    DevExpress VCL v14.2: Toggle Switch Control

    It’s a touch-friendly control designed to replace a traditional check box. We’re providing unbound, data-aware, standalone, and in-place versions of the editor.

    (Note that new controls in DevExpress VCL are only available for RAD Studio 2010 or the XE series. Delphi 7 and 2007 are not supported with new controls.)

  • DevExpress VCL: Gauge Control (coming soon in v14.2)

    With every release of DevExpress VCL, we add more controls and features for data visualization. Many applications these days are growing into business analysis systems: data crunching and the presentation of results in the clearest way possible to allow for efficient understanding. Dashboards are a prime example of this scenario.

    VCL Gauge Control: Full Circular Gauges v14-2

    With v14.2 we’re adding a new control to DevExpress VCL to help you in conveying usable information at a glance in your dashboards, the Gauge Control.

    VCL Gauge Control: Linear Gauges v14-2

    Using the VCL Gauge Control you can communicate appropriate information with a variety of types: circular, linear, and digital.

    VCL Gauge Control: Digital Gauges v14-2

    We’re providing the following types of gauges with v14.2: Circular (full, half, and quarter); Linear (horizontal and vertical); Digital (using 7 or 14 segments). The gauges are available in both unbound or data-aware versions. Having chosen a gauge type, you can then select from a dozen built-in styles, or create your own.

    Please be aware that the Gauge Control only supports RAD Studio 2010 or later (and in particular it supports the entire XE-series, for both 32-bit and 64-bit). We do not provide support for Delphi 7 or Delphi 2007 with this control.

1 2 3 4
6 7 8 9 10

Chat is one of the many ways you can contact members of the DevExpress Team.
We are available Monday-Friday between 7:30am and 4:30pm Pacific Time.

If you need additional product information, write to us at info@devexpress.com or call us at +1 (818) 844-3383


DevExpress engineers feature-complete Presentation Controls, IDE Productivity Tools, Business Application Frameworks, and Reporting Systems for Visual Studio, along with high-performance HTML JS Mobile Frameworks for developers targeting iOS, Android and Windows Phone. Whether using WPF, ASP.NET, WinForms, HTML5 or Windows 10, DevExpress tools help you build and deliver your best in the shortest time possible.

Copyright © 1998-2017 Developer Express Inc.
All trademarks or registered trademarks are property of their respective owners