ctodx

This Blog

News

Favorite Posts

Archives

  • DevExpress TestCafe v15.1 now shipping

    If you are a frequent visitor to the Download Portal on devexpress.com, you may already have noticed that we have published a new version of TestCafe, version 15.1. I am proud to announce that this is indeed the case: TestCafe v15.1 has been published and is now shipping.

    TestCafe_v15_1_NowShippingTestCafe is the automated testing platform for next-gen web applications. Not only that, but unlike other web-testing solutions, you don’t have to install awkward plugins into your browsers in order to do testing; that’s so 20th century. TestCafe provides your QA teams with the tools to start testing any web app in any browser that supports HTML5. Even better, TestCafe is OS-agnostic: the browsers can be running on Windows, Mac, Linux, or mobile OSes like iOS and Android.

    Over the past few months, we have been soliciting feedback from customers and testers on what they liked about TestCafe and what they thought was missing. Consequently, the responses have driven our enhancements to the product in v15.1 and I feel that the team has outdone itself with this release.

    Automated Screenshot Capture (ASC). From v15.1 you can add the capability to capture a screenshot of the web app as part of a test. So, as a very basic example, you can capture the web view if an error occurs in the test: sometimes a picture really is worth a thousand words.

    Enhanced Test Result View, Export Results. Sometimes just seeing the results of your tests isn’t enough, you need to analyze them in more detail. We’ve therefore improved the usability of the Results page by adding the ability to sort, group, and filter the results of your test runs. Not only that, but you can export the results of your tests in JSON, JUnit, or NUnit formats.

    Extensive Assertion Failure Reports. The new Results tab includes additional information about assertion failures: the test code line that failed, the differences between actual and expected values, and even a screenshot using the new ASC feature.

    Failing on a JavaScript Error. TestCafe now includes the ability to fail a test should a JavaScript error be detected in the page.

    All in all, TestCafe v15.1 is a very worthwhile release. If you are already an active customer and using it right now, go to the Download Portal and get it. You certainly won’t regret upgrading. If you are designing and implementing web applications, consider the testing phase of your project and evaluate TestCafe right now.

  • Techorama: what an awesome conference!

    Last week, Don Wibier and I manned the DevExpress booth at Techorama, what I’d characterize as the premier developer conference for Belgium. It was in a delightful little town as well: Mechelen, just north of Brussels. Even better, Techorama was in a local multiplex cinema, Utopolis – it was weird seeing posters for movies on the walls for a conference.

    Canalside in Mechelen

    The organization of the conference was superb: 800 attendees, 50-odd speakers, a dozen exhibitors, WiFi that worked and wasn’t underpowered, and no problems worth mentioning. It was lucky, shall we say, that Don is a native Dutch speaker: the majority of attendees, I’d guess, were Flemish or Dutch and I only had the odd occasion to practice what little French I have left. It helped of course that we had swag to help the conversations along; such as t-shirts, mugs, mouse pads, laptop stickers. We even raffled off a couple of portable bluetooth speakers.

    Don in the DevExpress booth at Techorama

    And what conversations we had! Don managed to get in some demos – yes, actual demos of the product! The most popular topics were undoubtedly ASP.NET and DevExtreme, although many of the customers we met (and we met many) confided into using mainly WinForms in their projects. There was also a healthy interest in Universal Windows apps, a topic we shall be talking about in some detail very soon (perhaps even sooner than you think).

    Don demoing at the DevExpress booth

    All in all, over a fairly intense couple of days, we managed to speak with most of the attendees, I’d say; some even more than once. It’s great to see such passion about developing software and such excitement about what the .NET (or Visual Studio) future brings. Thanks – dankjewel! – to all who came to say hi: I shall certainly recommend we come back next year.

    Saint Rumbold's Tower and Cathedral

    Wacky moment of the trip: this is Saint Rumbold’s Cathedral with its iconic unfinished tower, visible for miles around. In Dutch, that’s Sint-Rombout, which is also the name of a well-known brand of coffee – Rombouts. Confused, moi?

    In a week’s time it’s Microsoft TechDays in The Hague, Netherlands. More double Dutch for me!

  • Techorama 2015 at Utopolis Mechelen, Belgium – we’ll be there!

    Techorama 2015 is a developers’ conference in Belgium, so what’s not to like? It’s in Mechelen, which is, according to Google Maps, some 30 km north of Brussels (and only 21.1 km from the airport) on May 12 and 13 (that’s next Tuesday and Wednesday to you).

    This is a new conference for us, and we’re sponsoring it as a Gold Partner. To make sure the booth is run properly, our Euro-Events Executive Organizer (pronounced “eee-aw”) Rachel insisted that both Don Wibier and I man it, and this we will do to the best of our ability. We have been selected, shall we say, because we are ace at giving out swag. Plus, Don can speak Dutch like a native (because he is) and I can speak French like a bad tourist (because I am), so we’ll fit right into the Belgian bi-language norm. Only in cases of extreme difficulty will I switch into English (like, pretty much immediately).

    So, if you’ll be there, please do come over to the DevExpress booth. We’ll be happy to talk about our current product line and drop several hush-hush hints about what’s coming up in v15.1. Also, given the news out of Build last week, you’ll get an excellent opportunity to ask us what we think about the possibilities for new features that face us in the second half of the year. You know: Windows Universal Apps, Windows 10, Visual Studio 2015, ASP.NET 5, etc, etc.

    And if you’ll not be there? Well, you’ll miss out on all that. And on the swag.

    See you Tuesday!

  • Microsoft Build 2015 – what a blast!

    Well, it’s over, and what a Build it was! I won’t go over what Microsoft had to say – it’s been done to death in news articles, blogs, and tweets – but with regard to DevExpress and its products, possibly the more important things were Visual Studio 2015 RC, Visual Studio Code, Microsoft Edge (née Project Spartan), and Windows 10/Universal Apps. We shall be talking about these announcements and products in the coming weeks and months as we explain how and when we will be supporting them.

    This time the arrangement of the “Exhibitors Hall” was different. First, there wasn’t a hall per se, instead the the booths were separated on three floors in Moscone West. We were on the Cloud Platform and Developer Tools floor (the third floor, and the same as the main Keynote floor in fact) and, despite it being at the top of the building, we had a steady flow of customers, old friends, and, I hope, customers-to-be.

    Partner booths at Microsoft Build 2015

    We had a booth and, as is common with Builds through the years, every vendor’s booth was the same. Here’s Mehul at ours.

    DevExpress booth with Mehul Harry at Microsoft Build 2015

    Mehul and I fielded every question we could, gave out swag (the shrink-wrapped UI Superhero t-shirts were very popular), and demoed as much as we could. There were, shall we say, many questions about v15.1, our next major release, and, although we couldn’t say too much at the show, we did encourage everyone to stay tuned since we’re about to start blogging about the new features.

    Mehul demoing DevExtreme on a Nokia phone

    It was great to see so many people with such a strong sense of passion and excitement about the future. I’d have to say we were buoyed up by the enthusiasm of the attendees for the news that Microsoft presented and what it meant for their development stories.

    And next week? It’s Microsoft Ignite!

  • Microsoft Build 2015: We’re there, come say hi!

    All of a sudden it seems, Microsoft Build is again upon us. And what a Build it promises to be. Let’s see what’s been promised, or, even better, what’s been conjectured.

    Architectural plans for build1. Visual Studio 2015. OK, it seems fairly clear by now that at a Microsoft developers’ conference called Build, Microsoft are going to announce a new build (geddit?) of Visual Studio 2015. I doubt it’ll be the RTM but instead the RC, or Release Candidate. That’ll make it high time for this software-risk-averse CTO to install it on his machine – virtual machines, what are they?

    2. Windows 10. No, definitely not the release, but I dare say there’ll be some kind of developer-related news about the next generation of the Windows platform. There may be another beta release, but then again Microsoft are throwing out new versions regularly already.

    3. Developing cross-platform Windows apps. With the previous two items, we’ll be hearing about the ins and outs of creating cross-platform apps. Maybe with some joint time with Xamarin (after all, they are there too). So expect lots of information about Universal apps, especially for the phone. Maybe even for IoT? Who knows. (Well, they do, but you know what I mean.)

    4. Azure. Not too sure what will be talked about with regard to Azure. After all, we’ve just had Azure Mobile Services released, but there’s bound to be something new to keep the Azure name in the forefront of everyone’s mind.

    Not only all that, but we shall be there too showing off the DevExpress goods in our booth. And swag. Don’t forget that. So please come on over: Mike Roz, Mehul Harry, and Yours Truly will be there to talk about DevExpress products and about what’s coming up in v15.1 in – ooh, I don’t know <cough, cough> – a month’s time? Plus you’ll have the opportunity to ask us difficult questions about how we’re going to be supporting any new functionality related to 1 to 4 above. Plus swag.

    See you this week! (Did I mention the swag?)

  • 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.

    LayoutControlDesignTimeCustomizationUsingGlyphs

    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];
            panel.Hide();
            if(noWidgetsAreVisible())
                $(".widgets").addClass("hide-panel");
        };

    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.

    Summary

    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.

1 2 3 4
5
6 7 8 9 10
LIVE CHAT

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

FOLLOW US

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