xp – Owl's Blog on .NET development http://www.componentowl.com/blog Component Owl codes Better ListView control all night so you don't have to. Tue, 04 Sep 2018 13:10:05 +0000 en-US hourly 1 https://wordpress.org/?v=4.9.8 Windows Theme Support in Better ListView http://www.componentowl.com/blog/windows-theme-support-in-better-listview/ http://www.componentowl.com/blog/windows-theme-support-in-better-listview/#respond Fri, 01 Jul 2011 22:46:55 +0000 http://www.componentowl.com/blog/?p=287 Both current Better ListView 1.5 and the upcoming Better ListView 2.0 put emphasis on native theme support.

Contrary to many custom controls, Better ListView adjusts itself to current theme even if the theme is changed in run-time. For example, when user of your application switches theme from Classic to Aero, or to some other custom theme with elements of different sizes, Better ListView re-measures itself for the new theme smoothly. Reloading the component or re-starting the application is not necessary.

One of the sweet bonuses of using Better ListView 2.0 instead of regular .NET ListView is the full Groups functionality in all themes and all versions of the operating system. For example, groups are not collapsible in standard ListView on Windows XP and even does not support images. In Better ListView, however, you are able to unleash full potential of groups everywhere.

The following images show Better ListView in different Windows themes: Classic, XP Luna and Aero:

Better ListView in Classic theme

Better ListView in Classic theme

Better ListView in XP Luna Theme

Better ListView in XP Luna Theme

Better ListView in Aero Theme

Better ListView in Aero Theme

 

]]>
http://www.componentowl.com/blog/windows-theme-support-in-better-listview/feed/ 0
Work in Progress: “Groups” / “Item Hierarchy” Features http://www.componentowl.com/blog/tedious-work-with-groups-and-item-hierarchy-features/ http://www.componentowl.com/blog/tedious-work-with-groups-and-item-hierarchy-features/#respond Fri, 25 Mar 2011 23:11:00 +0000 http://www.componentowl.com/blog/?p=204 We’re currently developing complex, but very useful features for the new major version of Better ListView:

  • Groups – to enable grouping items into collapsible areas with “group headers”
  • Item Hierarchy – to allow for visually organizing items like in the tree

We are facing some non-trivial obstacles on the journey You might be interested in:

Tree Structure vs List Structure

In all tree/list hybrid controls we saw there is an underlying tree structure made of nodes (like in the TreeView control). These hybrid controls are basically a tree with ability to be displayed as list.

In Better ListView, however, the primary data structure is a list, which is flat. Item hierarchy is still possible and really simple to use, just by enabling the user to set level of any item. If the item has higher level than some item above it, Better ListView will display this as a “child” item, allowing user to even collapse parent item without affecting the data structure. Sorting is also possible through “range sort”, e.g. sort only selected items or items in a certain level of hierarchy.

Compared to tree-like structure, user can still bind an IList to Better ListView or serialize/traverse through the whole item “hierarchy” with a simple foreach block.

Keeping Native Look

.NET 2.0 supports visual styles through its VisualStyleElement and VisualStyleRenderer classes, but this support is limited to basic elements. When it comes to shiny new elements that can be seen in Windows Explorer (e.g. triangular expando buttons or styles group headers), one have to hack into Windows theme to obtain correct constants. We did this nasty work to bring user visual style that matches exactly what he sees in native controls:

Visual Style Elements for Groups

Visual Style Elements for Groups

The picture shows all the elements used in “Groups” and “Item Hierarchy” features. As You can see, it is a LOT. Only group header alone has 15 (!) states that should be drawn each in its specific situation. And Better ListView will handle all of them automatically for you.

We’ve taken customized themes into consideration, as well as older themes like “Vista Basic” or “XP Luna” or “Classic”. In all cases, we test control display thoroughly to obtain consistent results (a solid reference for us is a good old Windows Explorer as it shows most up-to-date wonders of native ListView control in each version of Windows at one place).

]]>
http://www.componentowl.com/blog/tedious-work-with-groups-and-item-hierarchy-features/feed/ 0