CustomRelations
---------------
Shows how to create a custom relation, the one with behavior managed by a custom code.

View relations (relations between table views in a data set)
can be based on a relation between two tables (their fields), or
they can be specified with custom code. Using custom relations, you can
create arbitrary complex master-detail hierarchies in data bound
controls, even if you can't express it in terms of a regular relation between
table fields. 

To create a custom relation, drag an arrow from parent to child table view in the
data set diagram using the Relation button on top of the data set editor.
Select the arrow to set properties. Specify the Name property, set GetRowsEvent
to True (leave the Relation property empty).

Use the C1DataSetLogic component attached to the data set to write code in the events
GetChildRows/GetParentRow specifying the algorithm for obtaining child rows and
(optionally) parent row for this relation.

In this sample, custom relation "Orders - Products" is used to implement a
many-to-many relationship between Orders and Products using Order Details
as an intermediary (join) table.

Relations "Orders - Order Details" and "Order Details - Products"
are hidden from data binding by setting ViewRelation.ExposedInBinding = False.
So, the DataGrid control does not show these two relations to the user, they
are only available programmatically. The only relation DataGrid control
shows is "Orders - Products".
