private Rectangle GetValueBoundsByRecordIndex(DevExpress.XtraVerticalGrid.ViewInfo.BaseRowViewInfo vInfo, int recordIndex)
        {
            Rectangle bounds = Rectangle.Empty;

            foreach (RowValueInfo valueInfo in vInfo.ValuesInfo)
            {
                if (valueInfo.RecordIndex == recordIndex)
                {
                    bounds = valueInfo.Bounds;
                    break;
                }
            }
            return(bounds);
        }
        private Rectangle GetBoundsByRecordIndex(int recordIndex, DevExpress.XtraVerticalGrid.ViewInfo.BaseViewInfo vi)
        {
            DevExpress.XtraVerticalGrid.ViewInfo.BaseRowViewInfo vInfo = vi.RowsViewInfo[0];
            if (vInfo == null)
            {
                return(Rectangle.Empty);
            }
            Rectangle bounds = GetValueBoundsByRecordIndex(vInfo, recordIndex);

            if (vInfo.ValuesInfo.Count > recordIndex + 2)
            {
                bounds.Width += GetValueBoundsByRecordIndex(vInfo, recordIndex + 1).Right - bounds.Right;
            }
            else
            {
                bounds.Width += vi.RowsViewInfo[0].RowRect.Right - bounds.Right;
            }
            return(bounds);
        }