protected virtual void ПроанализироватьЯчейку(ЯчейкаТаблицыОтчетнойФормы Ячейка, int Row, int Col) { }
private void ПостроитьТаблицуПоМодели(МодельТаблицыОтчетнойФормы МодельТаблицы) { int num2; base.Rows.FrozenCount = МодельТаблицы.КоличествоФиксированныхСтрок; base.Cols.FrozenCount = МодельТаблицы.КоличествоФиксированныхСтолбцов; base.ColCount = МодельТаблицы.КоличествоСтолбцов; base.RowCount = МодельТаблицы.КоличествоСтрок; int index = 1; while (index <= base.ColCount) { if (МодельТаблицы.ШириныСтолбцов[index] == 0) { base.Cols.Hidden[index] = true; } else { base.ColWidths[index] = МодельТаблицы.ШириныСтолбцов[index]; } index++; } for (num2 = 1; num2 <= base.RowCount; num2++) { if (МодельТаблицы.ВысотыСтрок[num2] == 0) { base.Rows.Hidden[num2] = true; } else { base.RowHeights[num2] = МодельТаблицы.ВысотыСтрок[num2]; } } foreach (ОбъединениеЯчеек ячеек in МодельТаблицы.ОбъедиенияЯчеек) { base.CoveredRanges.Add(GridRangeInfo.Cells(ячеек.Top, ячеек.Left, ячеек.Bottom, ячеек.Right)); } this.Представление.BeginUpdate(); Color color = Color.FromArgb(0x24, 0x33, 100); GridBorder border = new GridBorder(GridBorderStyle.Solid, color); for (num2 = 1; num2 <= base.RowCount; num2++) { for (index = 1; index <= base.ColCount; index++) { ЯчейкаТаблицыОтчетнойФормы формы = МодельТаблицы.Ячейки[num2, index]; if (формы != null) { формы.Значение = this.ПроанализироватьСсылкиНаКонстанты(формы.Значение); GridStyleInfo info = base[num2, index]; info.BeginUpdate(); if (формы.Формула) { info.CellType = "FormulaCell"; } if (!string.IsNullOrEmpty(формы.Значение)) { string input = формы.Значение; if (формы.Формула && input.ToUpper().StartsWith("=IF")) { Match match = регулярник.Match(input); if (match.Success) { input = string.Format("={0}", match.Groups["false"]); } } info.CellValue = input; } if (!string.IsNullOrEmpty(формы.ПараметрыШрифта.Наименование)) { info.Font.Facename = формы.ПараметрыШрифта.Наименование; } if (формы.ПараметрыШрифта.азмер != 0f) { info.Font.Size = формы.ПараметрыШрифта.азмер; } if (формы.ПараметрыШрифта.Ориентация != 0) { info.Font.Orientation = формы.ПараметрыШрифта.Ориентация; } info.Font.Bold = формы.ПараметрыШрифта.Жирный; info.Font.Italic = формы.ПараметрыШрифта.Курсив; info.Font.Strikeout = формы.ПараметрыШрифта.Зачеркнутый; info.Font.Underline = формы.ПараметрыШрифта.Подчеркнутый; if (формы.ПараметрыЗаливки != null) { info.Interior = формы.ПараметрыЗаливки; } if (формы.ЦветТекста != Color.Empty) { info.TextColor = формы.ЦветТекста; } if (формы.ВерхняяГраница == ГраницаЯчейки.Выделенная) { info.Borders.Top = border; } if (формы.ЛеваяГраница == ГраницаЯчейки.Выделенная) { info.Borders.Left = border; } if (формы.НижняяГраница == ГраницаЯчейки.Выделенная) { info.Borders.Bottom = border; } if (формы.ПраваяГраница == ГраницаЯчейки.Выделенная) { info.Borders.Right = border; } info.HorizontalAlignment = (GridHorizontalAlignment)формы.ВыравниваниеПоГоризонтали; info.VerticalAlignment = (GridVerticalAlignment)формы.ВыравниваниеПоВертикали; info.EndUpdate(); this.ПроанализироватьЯчейку(формы, num2, index); } } } this.Представление.EndUpdate(); }
protected override void ПроанализироватьЯчейку(ЯчейкаТаблицыОтчетнойФормы Ячейка, int Row, int Col) { GridStyleInfo info = base[Row, Col]; if (Ячейка.Формула) { base.УстановитьСтильАвтоблока(info); } else if (!string.IsNullOrEmpty(Ячейка.Значение)) { if (Ячейка.Значение.StartsWith("@")) { base.УстановитьСтильКнопки(info, Ячейка.Значение); } info.EndUpdate(); return; } if (Ячейка.Переменная != null) { info.Tag = Ячейка.Переменная; string key = ЯчейкаМетаструктуры.ПолучитьКодЯчейки(Ячейка.Переменная); if (this.ЯчейкиМетаструктуры.ContainsKey(key) && !Ячейка.Формула) { Type type = this.ЯчейкиМетаструктуры[key].ТипЗначения; info.BeginUpdate(); try { base.УстановитьТипЯчейки(info, type, this.ЯчейкиМетаструктуры[key].Описание); if ((base.ВариантОткрытия == ВариантОткрытияФормы.Чтение) || (base.ВариантОткрытия == ВариантОткрытияФормы.СводнаяФормаБезРедактирования)) { base.УстановитьСтильНередактируемойЯчейки(info); } else if (this.ЯчейкиДанных[key].Описание.ОбязательноДляЗаполнения) { base.словарьОбязательныхДляЗаполненияЯчеек.Add(key, this.ЯчейкиДанных[key]); this.УстановитьСтильОбязательнойДляЗаполненияЯчейки(info, false); } else if (this.ЯчейкиДанных[key].ТолькоЧтение) { this.УстановитьСтильЯчейкиТолькоЧтение(info); } else { base.УстановитьСтильРедактируемойЯчейки(info); } if (this.ЯчейкиДанных.СодержитИндекс(key)) { ТипЯчейки ячейки = this.ЯчейкиДанных[key]; if (ячейки != null) { if (ячейки is СсылочныйТип) { info.CellValue = (ячейки as СсылочныйТип).ЗначениеСтрокой; } else { info.CellValue = ячейки.Значение; } } else { info.CellValue = null; } } } finally { info.EndUpdate(); } } } }