List <Textbox> _GrowList;       // list of TextBox's that need to be checked for growth

        internal TableRow(ReportDefn r, ReportLink p, XmlNode xNode) : base(r, p)
        {
            _TableCells = null;
            _Height     = null;
            _Visibility = null;
            _CanGrow    = false;
            _GrowList   = null;

            // Loop thru all the child nodes
            foreach (XmlNode xNodeLoop in xNode.ChildNodes)
            {
                if (xNodeLoop.NodeType != XmlNodeType.Element)
                {
                    continue;
                }
                switch (xNodeLoop.Name)
                {
                case "TableCells":
                    _TableCells = new TableCells(r, this, xNodeLoop);
                    break;

                case "Height":
                    _Height = new RSize(r, xNodeLoop);
                    break;

                case "Visibility":
                    _Visibility = new Visibility(r, this, xNodeLoop);
                    break;

                default:
                    // don't know this element - log it
                    OwnerReport.rl.LogError(4, "Unknown TableRow element '" + xNodeLoop.Name + "' ignored.");
                    break;
                }
            }
            if (_TableCells == null)
            {
                OwnerReport.rl.LogError(8, "TableRow requires the TableCells element.");
            }
            if (_Height == null)
            {
                OwnerReport.rl.LogError(8, "TableRow requires the Height element.");
            }
        }
        Visibility _Visibility; // Indicates if the row should be hidden

        #endregion Fields

        #region Constructors

        internal TableRow(ReportDefn r, ReportLink p, XmlNode xNode)
            : base(r, p)
        {
            _TableCells=null;
            _Height=null;
            _Visibility=null;
            _CanGrow = false;
            _GrowList = null;

            // Loop thru all the child nodes
            foreach(XmlNode xNodeLoop in xNode.ChildNodes)
            {
                if (xNodeLoop.NodeType != XmlNodeType.Element)
                    continue;
                switch (xNodeLoop.Name)
                {
                    case "TableCells":
                        _TableCells = new TableCells(r, this, xNodeLoop);
                        break;
                    case "Height":
                        _Height = new RSize(r, xNodeLoop);
                        break;
                    case "Visibility":
                        _Visibility = new Visibility(r, this, xNodeLoop);
                        break;
                    default:
                        // don't know this element - log it
                        OwnerReport.rl.LogError(4, "Unknown TableRow element '" + xNodeLoop.Name + "' ignored.");
                        break;
                }
            }
            if (_TableCells == null)
                OwnerReport.rl.LogError(8, "TableRow requires the TableCells element.");
            if (_Height == null)
                OwnerReport.rl.LogError(8, "TableRow requires the Height element.");
        }