public PerformerStatEx(PerformerStatEx performer)
     : base(performer)
 {
     IsSubscribed = performer.IsSubscribed;
     ChartIndex = performer.ChartIndex;
     AvatarSmallIndex = performer.AvatarSmallIndex;
     Rooms = performer.Rooms;
 }
        private void SetupGrids()
        {
            var blank = new PerformerStatEx();
            // участники
            performersFastGrid.LoadPerformersGridSelectedColumns += () => new List<string>
                {
                    blank.Property(p => p.ChartIndex),
                    blank.Property(p => p.TradeSignalTitle),
                    blank.Property(p => p.Profit),
                    blank.Property(p => p.SumProfitPoints),
                    blank.Property(p => p.ProfitLastMonthsAbs),
                };
            performersFastGrid.SetupGrid();
            // переименовываем и задаем подходящее форматирование
            var colTradeSignalTitle = performersFastGrid.Grid.Columns.FirstOrDefault(c => c.PropertyName == blank.Property(p => p.TradeSignalTitle));
            if (colTradeSignalTitle != null)
            {
                colTradeSignalTitle.Title = Localizer.GetString("TitleTrader");
                colTradeSignalTitle.ShowClippedContent = true;
            }
            var column = performersFastGrid.Grid.Columns.FirstOrDefault(c => c.PropertyName == blank.Property(p => p.Profit));
            if (column != null)
            {
                column.Title = "%";
                column.cellFormatting = null; // отменяем дополнение цифр единицами измерения, которые выполняется в PerformersFastGrid
                column.colorColumnFormatter = DigitColorColumnFormatter;
            }
            column = performersFastGrid.Grid.Columns.FirstOrDefault(c => c.PropertyName == blank.Property(p => p.SumProfitPoints));
            if (column != null)
            {
                column.Title = Localizer.GetString("TitlePointsUnits");
                column.cellFormatting = null;
                column.colorColumnFormatter = DigitColorColumnFormatter;
            }
            column = performersFastGrid.Grid.Columns.FirstOrDefault(c => c.PropertyName == blank.Property(p => p.ProfitLastMonthsAbs));
            if (column != null)
            {
                column.Title = "$";
                column.cellFormatting = null;
                column.FormatString = "f0";
                column.colorColumnFormatter = DigitColorColumnFormatter;
            }
            performersFastGrid.Grid.CheckSize(true);

            // статистика
            statisticsFastGrid.SelectEnabled = false;
            statisticsFastGrid.Columns.Add(new FastColumn("a", Localizer.GetString("TitleStatisticsIndex"))
                {
                    ShowClippedContent = true,
                });
            statisticsFastGrid.Columns.Add(new FastColumn("b", " ")
                {
                    ColumnWidth = 50,
                    colorColumnFormatter = DigitColorColumnFormatter
                });

            // таблицы с позициями
            PerformerStatistic.SetupDealsGrid(openedOrdersFastGrid, false);
            PerformerStatistic.SetupDealsGrid(closedOrdersFastGrid, true);

            // суммарная статистика
            var blankSummaryStatItem = new SummaryStatItem(string.Empty, Color.Empty);
            gridSummaryStat.Columns.Add(new FastColumn(blankSummaryStatItem.Property(p => p.ValueString), Localizer.GetString("TitleValue")));
            gridSummaryStat.colorFormatter = (object value, out Color? color, out Color? fontColor) =>
                {
                    color = null;
                    var rowData = (SummaryStatItem) value;
                    fontColor = rowData.RowColor;
                };
            gridSummaryStat.UserDrawCellText += PerformerStatistic.GridSummaryStatUserDrawCellText;
        }