|
|
| Common Features: |
-
Data
-
Multiple columns - able to manage more than 2 billion columns x 2 billion rows
-
Intuitive object model - including objects such as ListColumn,
ListColumnCollection, ListColumnRange, ListRow and ListRowRange
-
Binding to data sources that implement IList or IListSource interfaces - such
as arrays, collections and ADO.NET objects
-
Simple and complex IList binding. When binding to an IList derived interface
the SimpleIListBinding property indicates whether the control should bind to
objects in the list (simple, like .NET ListBox/ComboBox) or properties of the
object type contained in the list (complex, like .NET DataGrid)
-
Binding to our ISimpleTabularDataSource interface. This interface is much
easier to implement than IListSource/IList, and provides superior performance
-
Unbound columns - the control maintains column data for you
-
Dynamic columns - the control communicates (on demand) with any object that you
provide implementing our ISimpleColumnDataSource interface
-
Bound, unbound and dynamic columns can be used at the same time!
-
Rows property; InsertRowsAt, MoveRow and RemoveRowsAt methods - available when
unbound. MoveRowUsingSortIndex can be used when bound. Finally, where rows can
be added, moved or removed using the bound datasource the control will update
accordingly
-
Numerous methods for accessing and updating data
-
Per row check state (checked/unchecked/indeterminate), with several methods to
access and update - CheckState, ClearRowCheckState, CheckedCount,
IndeterminateCount, IsChecked, SetCheckState and GetCheckedIndices
-
Filtering, with several methods to access and update - Filter,
ClearFilteredRows, FilteredCount, IsFiltered and GetFilteredIndices
-
Per row selected state, with several methods to access and update -
SelectedIndex, ClearSelectedRows, SelectedCount, IsSelected, SetSelected and
GetSelectedIndices
-
Powerful (yet consistent and easy to use) functionality for updating row check
state, row filtered state, and row selected state including comparison and
regular expression based matches
-
IndexOf and LastIndexOf methods (like .NET Array). Optional column indexing
(enabling binary searching) provides greatly enhanced performance without the
need to actually alter the underlying order of your data (which is required
prior to using the .NET Array BinarySearch method). This feature is
particularly useful when multiple columns are being utilized
-
Find method to locate values using regular expression or comparison based match
definitions. Multiple column Find also supported, returning the index of the
first row meeting multiple (per column) match definitions
-
FindNext method scans columns and rows for the next regular expression based
match
-
Single column sorting, multi-column sorting, and custom (delegate) sorting
-
Per column StringCompareCultureInfo and StringCompareMethod properties for
culturally aware comparison of string data
-
CalculateScalar method (ListColumn object) returns the result of single value
(scalar) calculations. The ScalarFunction enum is used to indicate which
calculation should be performed - values include Count, Min, Max, Mean,
Percent, StdDev, StdDevP, Sum, Var and VarP
-
Export method for exporting list text, with flexible options
-
Import method for importing delimited text, with flexible options
-
All functionality that compares data (Find; FindNext; sorting; comparison and
regular expression based matching) provides the ability to compare text
actually displayed in the UI. This is important where UI text has been
formatted or translated
-
Many more useful properties and methods for managing data and row state not
listed here!
-
Presentation
-
Column headers
-
Group headers - used to group contiguous columns
-
Standard control BackColor, Font and ForeColor properties
-
GroupHeaderFont and HeaderFont properties
-
'Display styles' provide a simple means to control item presentation
(background and foreground color, font) for varying situations. Control and
column properties include AlternateRowStyle, RowHoverStyle, RowNormalStyle,
RowPressedStyle and SelectedRowStyle
-
BackgroundImage property
-
All xxxxImage properties are provided with a sibling xxxxImageRenderMethod
property. Supported values include TopLeft, TopCenter, TopRight, MiddleLeft,
MiddleCenter, MiddleRight, BottomLeft, BottomCenter, BottomRight, Tile,
Stretch, StretchIsotropic, and MiddleCenterBestFit
-
ImageTranslationList - provides automatic translation of underlying item values
to images
-
StringTranslationList - provides automatic translation of underlying item
values to strings
-
Numerous column properties:
-
Header and item 'ContentType' - Text, StringTranslationList, Image,
ImageTranslationList and CheckBox
-
Header and item alignment, format flags, line alignment, tab stops and trimming
for control over text presentation
-
TextFormat and TextFormatProvider properties provide additional, culturally
aware, control over text presentation (items only - it is assumed that header
text does not require formatting by the control)
-
ShowHideButton object. The 'show/hide button' concept allows users to
interactively show/hide columns. Refer to the user interaction section (below)
for further detail
-
Text content from hidden columns can be automatically merged into the columns
used to hide those columns. The HeaderMergeFormat and ItemMergeFormat
properties indicate the format strings to be used when merging text content
from multiple columns. Text merging is a very handy feature. It allows
underlying data to remain in it's original state yet be merged for presentation
to the user
-
Header custom and filter buttons. Refer to the user interaction section (below)
for further detail
-
NullText property indicates the text to be used in place of DBNull values
-
Cell button. Refer to the user interaction section (below) for further detail
-
Line (vertical) color and style
-
CustomLayoutProvider property - by supplying your own custom layout provider
you can customize the location and size of visual elements (check boxes,
buttons, content etc.) This simple feature allows us to provide great
flexibility without cluttering our object model (without it we'd need to
provide many properties to handle all the possibilities.) It also allows you to
easily re-use your layout provider code across multiple columns (or controls) -
so there is no need to clutter your source code either!
-
CustomPaintProvider property - by supplying your own custom paint provider you
can easily take control of column rendering. Like CustomLayoutProvider, this
feature allows you to easily re-use your paint provider code
-
Analysis painters - an analysis painter is a class that implements
ICustomLayoutProvider and ICustomPaintProvider. It is used to display column
data graphically (for analysis). Six analysis painters are included -
BarPainter, MedianBarPainter, PlusMinusBarPainter, PositionPainter,
DateTimePositionPainter and SetPainter. Or you can provide your own painter by
inheriting from the base class, AnalysisPainter. To see analysis painters in
action, take a look at the Analysis Painters page
in our Product Tour
-
ListRows property - indicates the maximum number of rows to be displayed in the
list
-
GroupHeaderHeight, HeaderHeight and RowHeight properties
-
Varying row height
-
Automatic calculation of column width and row height (where required)
-
User resizing of columns and rows
-
Column sets - cells from multiple columns may be stacked vertically within row
layout. This simple concept can save a lot of wasted space and greatly increase
user recognition/understanding of the data provided
-
Horizontal line color and style
-
Complete RTL (right-to-left) support
-
Windows XP+ visual styles support. We utilize two internal theme providers,
each capable of rendering all common (themed) visual elements such as control
border, headers, check boxes and buttons. The first of these theme providers
supplies standard Windows style rendering, the other supplies XP visual style
rendering. Simply set the ThemeStyle property and we'll take care of the rest
-
CustomThemeProvider property. Furthering the concept just presented, you can
supply your own 'custom' theme provider. It can be used to customize the
rendering of any or all common visual elements. For those elements that you
choose not to render, the control will use it's own current internal theme
provider. Just like the custom layout and paint provider concepts (discussed
above), this incredibly flexible feature adds just one property to the
control's object model
-
IntegralHeight property - when True, the control's height will be automatically
adjusted to 'best fit' current properties (ListRows, GroupHeaderHeight,
HeaderHeight and RowHeight properties)
-
Many more useful properties and methods for managing presentation not listed
here!
-
User Interaction
-
Full support for standard keyboard and mouse operations - including mouse wheel
support
-
MouseWheelScrollLines property
-
Advanced user search feature called AutoFind that provides type-ahead
(auto-complete) style interaction. AutoFind can be used inside itCombo with or
without an edit text box, and in itList. Please refer to the
AutoFind topic in our Product Tour
-
EditCol property in itCombo, AutoFindCol in itList
-
CheckedListBox functionality
-
SelectionMode property just like the .NET ListBox - values include None, One,
MultiSimple and MultiExtended
-
ScrollBarVisibility property - values include Auto, BothAlwaysVisible,
HorzAlwaysVisible and VertAlwaysVisible
-
ListColumn object CellButton property
-
Text from collapsed (hidden) columns can be merged into remaining columns using
a developer specified format string. This feature can be used in conjunction
with the ShowHideButton property, or on it's own. The 'show/hide button'
concept allows the user to interactively expand (show) and collapse (hide)
columns
-
Row filtering in the user interface! The ListColumn object HeaderFilterButton
property supports values of MenuCollection, StaticUniqueListMenu and
UniqueListMenu. In the case of MenuCollection, the control will use menu items
from the HeaderFilters property - a collection which you can fill with your own
custom menu items. In the case of UniqueListMenu the control will dynamically
generate a menu list of unique column values - making it possible for the user
to drill down to any particular subset of data quickly and easy. No matter
which option you choose, this concept also allows combination filtering - where
filters may be specified by the user across multiple columns, and for any
column filter to be enabled/disabled with just a click of the mouse. There is
no need for a custom filter row (which may not make sense in some columns) and
the user does not need to learn regular expressions based filter patterns
-
Header custom buttons can be used for anything you like. We manage the
presentation (though this, of course, is overridable) and notify you when the
button has been clicked. As an example, we use this feature ourselves to
provide a 'Select all' button in the designer - take a look at the list in the
Designer columns page in our Product Tour
-
ListColumn object HeaderBehavior property supports values including None,
SortColumn and Simple. In the case of SortColumn the user can sort columns by
clicking on the column header
-
Most of the 'display styles' discussed above apply to specific control state.
That is, they are used when the mouse is idle, hovering or pressed - providing
the user with a more interactive experience
-
Dynamic tooltips - tooltip text can be specified as the mouse passes over
various control parts
-
Shortcut and TooltipText properties in UI buttons
-
Numerous events to intercept, respond to, or override user interaction
-
Many more useful properties and methods for managing user interaction not
listed here!
|
| Usability: |
-
A very useful designer is provided. It is simple to use - just one page for
control properties and another for column properties. Utilising our unique
'Tabbed Property Page' interface, it is much easier and faster to use than any
other designer we've seen, or the Visual Studio .NET 'Properties Window' (where
hundreds of properties can exist together). Perhaps the best feature of all,
the columns designer page allows you to modify any single property across
multiple columns at the same time. For online screenshots, please refer to the
Designer page in our Product Tour
-
The designer is dynamic - it will recognize additional properties provided by
any control you derive from our controls
-
Reset method - both controls can be completely restored to their initial
(default) state by calling this method. The Reset method is available at design
time via the designer or Visual Studio .NET 'Properties Window'
-
ListColumnEnumerator and ListRowEnumerator allow quick and easy For Each style
iteration across columns and/or rows
-
ListColumnRange and ListRowRange allow iteration across specific 'ranges' of
columns and/or rows
-
ListColumnRange can also be used to modify column properties across multiple
columns in just one line of code
-
ListLayoutInfo object provides information about the control's run time state.
Features include LeftCol, RightCol, TopRow, BottomRow, IsColInView and
IsRowInView
-
Both controls expose a tremendous amount of functionality. But, much of this is
provided via method overloads, and elsewhere many common patterns exists. For
example, once you know how to 'Find' data using regular expressions, you should
have no problem filtering, or updating row checked or selected state either
|
| itCombo Additional Features: |
-
CueText and CueTextColor properties
-
DropDownStyle property just like the .NET ComboBox - values include DropDown,
DropDownList and Simple
-
DropDownWidth property
-
DropDownPosition property - values include AlignLeft, AlignRight, Auto,
CenterControl and CenterScreen
-
DropDownAutoResizeMethod property - values include None, BestFit, Columns and
Control
-
EditImage, EditHighlightColor, EditContextMenu and Text properties
-
EditFormat property makes multi-column edit possible
-
UpDown property - when DropDownStyle = DropDown or DropDownList, an up/down
button is displayed instead. The user can scroll through the underlying list
using these buttons (the list itself is not shown)
|
| Quality: |
-
Both controls have been purpose built from scratch. They do not inherit from
their .NET counterparts, nor do they wrap their Windows counterparts (like the
.NET controls)
-
Full support for Visual Studio 2003 and 2005 design-time data binding
-
A thorough Help manual is provided, and a handy demo with lots of great
examples and sample code. The demo is provided with full C# and VB.NET source
-
We closely followed Microsoft's
Design Guidelines for Class Library Developers to ensure a quality
product and consistent, intuitive object model
-
The assembly has been written in 100% managed code, and we only use external
Win32 functions where absolutely necessary
-
Both controls are extremely efficient - we only utilize memory as required and
we release it immediately. We do everything short of calling GC.Collect (which
could of course interrupt your application and interfere with the user's
experience)
-
Much internal code is re-used over and over again, making the controls as
lightweight as possible
-
The assembly is CLSCompliant - both controls can be used with any .NET language
-
This product has been carefully tested using tools like
FxCop to ensure both controls are inherently stable
-
This product has been designed for and tested on Windows 98, ME, 2000 and XP
|
|