private void FastGridUserHitCell(object sender, MouseEventArgs mouseEventArgs, int rowIndex, FastColumn col)
        {
            var filterObject = (FilterObject)fastGrid.rows[rowIndex].ValueObject;

            if (col.PropertyName == filterObject.Property(p => p.Selected))
            {
                filterObject.Selected = !filterObject.Selected;
                fastGrid.UpdateRow(rowIndex, filterObject);
                fastGrid.InvalidateRow(rowIndex);
                UpdateExpression();
            }
            if (col.PropertyName == filterObject.Property(p => p.Operator))
            {
                operatorsContextMenuStrip.Tag = filterObject;
                foreach (ToolStripMenuItem item in operatorsContextMenuStrip.Items)
                {
                    item.Checked = PerformerCriteriaFunction.GetExpressionOperatorString(filterObject.Operator) == item.Text;
                }
                operatorsContextMenuStrip.Show(fastGrid, fastGrid.GetCellCoords(col, rowIndex));
            }
        }
 // конкатенация выражения этого объекта с существующим выражением;
 // используется для представления формулы из FilterObject-ов в виде строки
 public string UpdateExpression(string expression)
 {
     return(expression + (!string.IsNullOrEmpty(expression) ? "&" : "") + "(" + Name +
            PerformerCriteriaFunction.GetExpressionOperatorString(Operator) + Value + ")");
 }