AddRangeTrackBarToGroupBox
(
NumericFilterParameters oNumericFilterParameters,
String sTableName,
GroupBox oGroupBox,
StringBuilder oDynamicFilterConditions,
Int32 iX,
ref Int32 iY
)
{
Debug.Assert(oNumericFilterParameters != null);
Debug.Assert( !String.IsNullOrEmpty(sTableName) );
Debug.Assert(oGroupBox != null);
Debug.Assert(oDynamicFilterConditions != null);
AssertValid();
String sColumnName = oNumericFilterParameters.ColumnName;
// Get the ranges to use for the range track bar.
Decimal decAvailableMinimum, decAvailableMaximum,
decSelectedMinimum, decSelectedMaximum;
String sSelectedMinimumAddress, sSelectedMaximumAddress;
GetRangeTrackBarRanges(oNumericFilterParameters, sTableName,
out decAvailableMinimum, out decAvailableMaximum,
out decSelectedMinimum, out decSelectedMaximum,
out sSelectedMinimumAddress, out sSelectedMaximumAddress);
// Create a range track bar appropriate for the filter parameters.
IDynamicFilterRangeTrackBar oDynamicFilterRangeTrackBar;
if (oNumericFilterParameters is DateTimeFilterParameters)
{
oDynamicFilterRangeTrackBar =
new DynamicFilterDateTimeRangeTrackBar(
sTableName, sColumnName);
}
else
{
oDynamicFilterRangeTrackBar = new DynamicFilterRangeTrackBar(
sTableName, sColumnName);
}
// Set the range track bar's ranges and custom properties.
oDynamicFilterRangeTrackBar.SetAvailableRange(
decAvailableMinimum, decAvailableMaximum);
oDynamicFilterRangeTrackBar.SetSelectedRange(
decSelectedMinimum, decSelectedMaximum);
oDynamicFilterRangeTrackBar.SetCustomProperties(
oNumericFilterParameters);
// Position the range track bar.
Debug.Assert(oDynamicFilterRangeTrackBar is Control);
Control oControl = (Control)oDynamicFilterRangeTrackBar;
oControl.Location = new Point(iX, iY);
oControl.Width = oGroupBox.Width - (2 * iX);
oControl.Anchor = AnchorStyles.Left | AnchorStyles.Top
| AnchorStyles.Right;
// Make sure that a bunch of unwanted events during initialization are
// avoided.
Debug.Assert(!m_bHandleControlEvents);
oDynamicFilterRangeTrackBar.SelectedRangeChanged +=
new EventHandler(this.RangeTrackBar_SelectedRangeChanged);
oGroupBox.Controls.Add(oControl);
iY += oControl.Height + DynamicFilterControlBottomMargin;
// Append a pair of conditions to the Excel conditions.
AppendConditions(oDynamicFilterConditions, sColumnName,
sSelectedMinimumAddress, sSelectedMaximumAddress);
return (oDynamicFilterRangeTrackBar);
}