110% DX ? DXTREME


Before everyone starts messaging me and telling me 110% is not possible, just listen !

For weeks I’ve been watching the countdown over at DevExpress promising to announce something cool.

Well tonight 6pm AEST all was revealed – DXTREME

In a nutshell, 3 tools in 1 – developing rich cross platform applications, and it looks amazing. Simplified codebase, clever wizards, deployment via QRCode (for testing)

There is no way I can do justice to what is being shown, so instead, head over to DXTREME and watch the announcement video.

I can’t wait to get my hands on the product to use a single environment to create my next iPad project that compliments my 100% DX WinForm app !

100% DX – XtraReports : bye bye Crystal, sorry ActiveReports


What’s the first thing that comes to your mind when I mention reporting? Crystal? ActiveReports? I have used these and others on numerous projects, but then I learnt about Developer Express XtraReports, lets see if XtraReports can make it into the 100% DX range…

For a full run down on all the cool things you can achieve, check out the Developer Express web site, this post is about filling a need, quickly.

As part of the RetailOne Connect system, we needed to print a purchase order, nothing complex, just a nice looking report that can be updated from time to time. It was important to be able to export as a pdf, and generate the document quickly.

The report designer was just as friendly as expected, with a drag drop approach for fields, or a nice selection of other tools available in the toolbox,

Creating bands is a simple right click, inserting sub reports just as simple.

In the case of R1, I didn’t need any scripting or code behind, but I couldn’t help having a play first.

What really surprised me with the ease of implementing in the code:

A complete preview version of the order could be generated with as little as:

Dim report As PurchaseOrder = New PurchaseOrder()
report.DataSource = db.OrderSummaries.Where(Function(p) p.OrderID = OrderID)
report.ShowPreview()

The preview window has an amazing amount of options available, page layouts, colours, watermarks, export to PDF, JPG — you name it !

And a quick send order as PDF via email client was a matter of:

Create PDF from report:
Dim path As String = GetTempOrderPath()
Dim report As PurchaseOrder = New PurchaseOrder()
report.DataSource = db.OrderSummaries.Where(Function(p) p.OrderID = OrderID)
report.ExportToPdf(path)

Create Email with attachment:
Dim mail As SendFileTo.MAPI = New SendFileTo.MAPI
mail.AddAttachment(path)
mail.AddRecipientTo(Supplier.Contact, Supplier.Email)
mail.SendMailPopup(String.Format("Purchase Order {0}", OrderNumber), "Please find attached purchase order.")

For me there is no choice now, I will be sticking with XtraReports in all our projects. When I do a more complex layout or code behind I will do another post and report my findings.

My only complaint is that they don’t offer a version for Objective-C …. maybe in the future?

100% DX – CodeRush replaces ReSharper


The debate as to CodeRush or ReSharper has been undertaken by many people of the years, in fact prior to writing this post, I read through a number of older comparisons which put forth good arguments for both camps.

For me, it is part of the 100% DX campaign.

For years I was an avid user of CodeRush & Refactor! Pro (from here on the combination of products will just be referred to as CodeRush), but colleagues continued to rave about ReSharper. At the time I wanted to get more feedback on my code style so I decided to give ReSharper a go.

Initially I found the memory usage on ReSharper better than I was experiencing with CodeRush, the UI a little less ‘in your face’, but even after a month of experimenting with all the features, I was still becoming frustrated and getting ‘tripped up’ and therefore slowed down when trying to do basic text editing. Constantly being told that code the Visual Studio IDE had generated (click events etc) was not complying to the best practices was also annoying. The intelli-sense interaction was lacking, templates and code-gen cumbersome to setup.

So I decided to switch back to CodeRush. Now I understand not everyone thinks the high visibility UI is a good move, but I like the fact that things stand out when I want them to. Templates and Drop Markers are a heaven send, and the refactoring functionality gets a regular workout. For example, being able to type ‘CC’ and have a constructor created with the relevant parameters is great, I can select which items from my class I want to include and bam.. the code is there.

The CodeRush training window ensures I have context sensitive help through the learning curve.

But for me, the real time saver is templates. One of my co-workers once called me a ‘Template Whore’, I have set up a large number of custom routines that save hours of coding. It takes a little bit of time to get used to the myriad of options you can use, but persevere, you will make your time back ten fold.

Finally, but by no means least is the Refactor! Pro functionality. I love a refactor session after some hardcore development, and the features available make streamlining my codebase a pleasure not a chore.

Simple things like extracting code into a new method is simple:

If you have not yet tried CodeRush and Refactor! Pro, then I highly recommend you head over to DevExpress and download a trial copy, you won’t be disappointed.

100% DX


Over the coming months I will be writing a series of articles on the benefits of the DevExpress range of products, and to see if it is possible to use one 3rd party set of components to deliver real world business solutions.

In my post “What’s in your toolbox” I noted that my favourite grid control with Component One Flexigrid, subsequently I was asked why I am not using the Developer Express XtraGrid, my answer “it does not provide the flexibility or granular control” raised some eyebrows and was the cause for more questions. In order to answer the questions I started to consider some of the coding methods currently used and consider expanding my thinking.

It has been an interesting journey so far with the undertaking to use XAF as well as Entity Framework. So far the results have been surprising, maybe there is room for the XtraGrid control on my toolbox.