Today marks the launch of Microsoft Visual Studio 2017. We're also celebrating 15 years of .NET and 20 years of Visual Studio. It's been a long way! Actually, I had the honor to attend the VS Live in San Francisco when .NET was released.
Years ago I started developing a class to simplify the integration of List & Label into Xbase++ which I used for all my client's apps. The range of functionality grew with every new task. By now it supports real data preview which is handled in a separate thread.
The Clarion community has been working with List & Label for many years now. Starting with the Solace templates, those were donated to the public domain in 2010. Since then, various contributors have been working on them.
First of all, on behalf of the whole combit team I'd like to wish you a happy belated new year. I hope you enjoyed the holiday season and start into 2017 with refueled energy. While we're busily working on version 23 already, I'd like to continue sharing some hidden gems in List & Label 22.
GS1 defines a huge range of application identifiers that can be used to encode certain information in a barcode. Besides the Global Trade Item Number (GTIN), which is usually the most important part, the production date, packaging component number, count of items and many more application identifiers (AIs) are defined.
In the brand-new version 22 of List & Label, we introduce a new process to send and receive debug output. This has great advantages when integrating List & Label in existing logging landscapes. Internally, the UDP protocol is now used for sending debug messages. Logging services and web applications has been a royal pain before - it has just become a breeze.
While List & Label has a superior concept for printing mail merges, many other (usually band-type) reporting tools people got used to apply a different concept to print invoices and other mail merge typed projects. Usually in List & Label, you'd define the header data as variables and use text objects, images etc. to design your letter head.
We have a release cycle of approximately one year per major version - actually it's quite accurately so, we have released the past 10 versions late in October. Coincidentially, this happens to be around my birthday, but that's a different story. It's always a nice present anyway.
From time to time it's great fun to stray off the beaten .NET path to venture into other developer's hemispheres. This time I paid a visit to the great crowd at the EMEA PUG Challenge in Noordwijk/Netherlands to dig into the Progress community.
For you as an enterprise application developer, logging is probably one of the essential features of your app. It enables you to trace and see what the user did just before the app went blank, and see if the typical user answer "I haven't done anything" proves right or wrong. To support you in this task, logging was built into List & Label from the very start.
Until version 22, there was a number of restrictions for web based projects. As the Web Designer is a single project file designer, all the glory that comes with multiple project files like project templates, table of contents and index and – most prominently – drilldown support were not available as they couldn't be designed.
Quite a while ago we introduced a full screen presentation mode which allows you a quick presentation of your reports. Why fire up PowerPoint (or any other presentation software) when you just need to present a couple of charts and tables? This way, your presentations are lightweight and always up to date, as you or your end-users can re-create them just in time.
This is one of those "whaaaaat, that didn't work before?" features. No, it didn't. Until version 22, you were only able to sort bar charts with string labels ascending or descending. Alphabetically. Numerics and dates are treated differently, but for strings you only could get A-Z, Z-A or unordered, i.e. in the order the database supplies the data.
With Treemap charts you can visualize hierarchical data by using nested rectangles in the upcoming version 22 of our List & Label reporting tool. The area of each rectangle is proportional to its value, while the sum of all rectangle areas fills up the whole chart area.
Version 22 of List & Label will introduce a new WPF wrapper control for the existing WinForms PreviewControl. While it uses a WindowsFormsHost at the core, the wrapper is a drag & drop replacement for the existing WPF preview control which will continue to be supported.
As we swiftly proceed through the development process of List & Label 22, we found a slot to add one more feature to the crosstab. Starting in version 19, we've added a lot of interactivity to the preview, including a feature called "Expandable Regions" for the report container. It allows to expand sub tables by just a click. For LL22, we've now extended this feature to the crosstab.
This is one of the major UI visible changes in LL22. All objects have their distinct set of properties which is displayed in the property window. Depending on the complexity and flexibility of the object, the list of properties is quite long where most of the time you probably don't need 50% of them. Enter the new Property Favorites.
The process of getting snail mail ready for posting can be rather tiresome. You print your letters or invoices, enjoying the fine work you have done designing them in List & Label, and then? Even in our modern times you lick the stamp, assuming you have the right one at hand, and stick it on the envelope. How very old-school is that? With the upcoming version 22 of List & Label this process can be elegantly automated through Internetmarke, a service to pay for postage online by German courier company Deutsche Post AG.
Service Pack 3.001 adds a host of new features to combit Report Server 3. Some improvements in our enterprise reporting solution were inspired by the productive feedback from our customers. Thanks for letting us know about your ideas! Here’s a short list of the latest features and improvements.
The IDataProvider interface for .NET has enabled many features that are not available for all of the other platforms so far. Most importantly, it brings multiple report containers and nested tables. For C++, we've included a sample in LL21. This is sadly missing in Delphi. In addition, the current Delphi data-binding engine still works against the BDE, a technology that has been deprecated quite a while ago by Embarcadero.
We'll introduce a brand new popular chart type that has been missing in List & Label until version 22: radar charts. Also known as "spider charts", "web charts" or "polar charts", they are a cool way to visualize ratios between different categories across multiple rows. It can answer questions like "which values are most similar, i.e. do we see clusters of values" and helps to find outliers at a glance.
From the latest blog post you could already tell that the crosstab is one of our focus areas for version 22. Besides multiple result cells
we decided to pay a visit to the crosstab functions as well. In version 21 these functions can already be used to reference the values of sum cells, column and row labels etc. By extending the functions slightly, striking new features become available.
Despite its tender age, our self-service reporting solution combit Report Server has already garnered no small amount of attention, as evidenced by the Big Data Rising Star award it received from the Experton Group last year. We are currently working on the new version...
This is a goody. Try out for yourself and have fun!
As with every release, we've added a lot of finetuning to the Designer and its objects. We haven't been able to cover each of the new features in the past LL21 blogpost feature marathon – there are just too many gems to uncover. So here are some of these new Designer features you don't want to miss that make working with LL smoother than ever before.
In version 20, we started to blog about upcoming features in List & Label. I'd like to stick to this new tradition and share new features in version 21 to give you an idea of what we're working on. As always, comments are appreciated very much. If you have new ideas to share, you'll also want to visit our feedback portal. See our April blogpost if you haven't worked with the portal before. So, without any further ado I'll share the first new feature with you – an improved default font handling.
User innovation has always been a driving force for our product development. Many of the features we've added in the past were inspired by requests from the community. Often, multiple requests for similar features helped us to find the actual need behind the feature ideas. Most prominently, the report container was born this way – from the need to be able to report relational data structures.
While we are constantly working on LL21, we started to merge selected features to the 20-branch. This provides us with the agility to quickly react to frequent demands and offer a much shorter time to market for our subscription customers.
The data provider concept has been around for a couple of years now. We steadily work on extending the list of available data providers and can bind to most any data source by now. Besides the well-known ones, there are also some meta providers that deserve some spotlight.
As we're starting internal discussions and meetings and the first LL21 sprint is getting in shape I wanted to share this photograph, the result of a two hour meeting between the two guys that are sometimes called "Mr. List & Mr. Label" internally - our Senior Architect Christian Kaiser and myself.
We always try to implement new features as visible as possible. However, sometimes features are less discoverable or self explaining than we'd hope for – we're steadily working on that. Here are three very useful features you might have overlooked so far.
In version 20 you see the debut of a brand new Designer object: the checkbox. This object is used to indicate if a boolean value (a condition) is met or not. Think of visualizing the availability of a product, the selected menu in a hotel etc. And the OLE object just got a major overhaul.
List & Label 20 is quickly hitting the final milestones. I've been blogging about the new features since spring. This time, however, I'd like to share some insights into what happens as we shift near RTM.
In the last version we introduced a number of interactive features like report parameters, expandable regions, and dynamic sortings. Until version 20, using these in a web application was not possible as they result in a partial rerendering of the report or – for drilldown reports – trigger a brand new report. As the existing viewers didn't have a communication channel to a server control, this rerendering was impossible.
Enter the new HTML5 viewer. This viewer is designed to work in almost any web browser. It is optimized for mobile devices and supports interactivity. It requires ASP.NET on the server side but can use any operating system on the client.
The improvement of our support for .NET has been a major focus in our feature planning process since the initial .NET beta release in early 2001. As more and more IDE vendors adopt CLR support for their languages and join the .NET community, .NET has become ever more important. Thus, version 20 will feature a wide range of new .NET features that make List & Label even more versatile when using it with CLR languages.
Through a cooperation with REA, a renown vendor of barcode verifiers, we were able to grade and improve our barcodes according to the usual ISO standards. Amongst other optimizations we completely changed the rendering algorithm to optionally match the bars exactly to the device pixels, eliminating all rounding effects this way. Typically, at least a grade of "B" is required by barcode consuments. This should now be easily achievable on typical hardware.
The Ribbon interface has been adapted to Redmond's latest UI style. It now supports the Office 2013 flat icon style and thus blends nicely with modern applications. For those who really need it, we still ship the "old" interface in a sepatate resource file that can be used instead of the default.
This has been a customer request that kept coming back over and over again – “please add the possibility to export to more formats from the preview window”. The typical workflow obviously is to check the result in the preview first. If all is well then an export to the final format is triggered. In List & Label 20 we now have added the possibility to export to the formats that were requested most – Microsoft Excel, Microsoft Word and XHTML. These formats were added to the already existing PDF, Text and Image formats.
From the perspective of an Office User, this was one of the major missing features in List & Label so far. In Microsoft Excel, for example, you often find yourself styling cells to resemble a headline. The workflow here is to just style one cell and then use the format painter tool for the other cells. This saves a remarkable amount of time. In List & Label, you could have used a multi selection of fields, however if you forgot (or – behold – didn't know) this feature, you'd find yourself repeating the same formatting steps again and again. And if you wanted to transfer the format of a whole object – e.g. a chart with all the fonts, colors, background settings etc. – there was no workaround to a huge lot of work. Enter the format painter tool...
Since we introduced the report container in List & Label 11, the one remaining feature request that kept coming in was “could we have multiple report containers, please”. Many cases can be covered by using a multi-columnar layout for the report container as a workaround or combining distances between container elements and changes in alignment to get the visual impression of separated tables. But these workarounds are not very discoverable and they are just that – workarounds.
In version 20 we’ll introduce a brand new databinding mode for the .NET component which will replace the old one seamlessly. You won’t need to apply any code changes to profit from this new mode. However, under the hood things will be working quite different then.
The two tool windows you'll probably use the most in the report designer of our List & Label reporting tool are the "Objects" window and the "Report Structure" window. The "Objects" window enables you to quickly select an object in order to change its properties and contents. The "Report Structure" window is used to configure the specific contents of a report container object, i.e. tables and subtables, charts, crosstabs and Gantt charts.
Using report parameters has become very popular since we've introduced them in version 19. A typical use case that will become even more seminal with version 20 of our reporting tool is using parameters to filter data (see last feature focus). This is something we've usually put on the "don't" list as databases can filter data much faster than we can. In the past, all records had to be passed to the reporting engine which then decided if a record should be used or not. A vast overhead for a task databases are usually optimized for. In version 20, we'll be introducing a new feature that allows List & Label filter expressions to be translated to native database filters, therefore hugely increasing performance (in principle, depending on the data this is "infinitely" faster).
Building on the sound foundation of report parameters introduced in version 19 of our List & Label reporting tool, we've extended the way drilldown reports can be used in the report designer.
In addition to the drilldown via relations which we already had in the product for a couple of versions, you can now trigger a sub report that uses report parameters and set the parameter values depending on the item that you just clicked in the preview. This terrific feature works for pie/donut and bar charts, shapefile charts, table fields and crosstab contents. Of course, a drilldown report can contain another drilldown, too.
As with all the feature focus articles, keep in mind that this feature is not yet available in the current version, it will be part of List & Label 20.
In the past, we haven’t been communicating our development progress until the next major version of our development component was almost finished and polished. This is now going to change! Our motivation for this blog is, to show you early what to expect from the next version of our List & Label reporting tool.