Beispiel #1
0
 public override void ОбновитьЗначения()
 {
     base.BeginUpdate();
     for (int i = 1; i <= base.RowCount; i++)
     {
         for (int j = 1; j <= base.ColCount; j++)
         {
             GridStyleInfo info = base[i, j];
             if ((info.CellType != "FormulaCell") && ((info.Tag != null) && (this.ЯчейкиМетаструктуры != null)))
             {
                 string str2 = ЯчейкаМетаструктуры.ПолучитьКодЯчейки(info.Tag.ToString());
                 if (this.ЯчейкиДанных.СодержитИндекс(str2))
                 {
                     ТипЯчейки ячейки = this.ЯчейкиДанных[str2];
                     if (ячейки != null)
                     {
                         if (ячейки is СсылочныйТип)
                         {
                             info.CellValue = (ячейки as СсылочныйТип).ЗначениеСтрокой;
                         }
                         else
                         {
                             info.CellValue = ячейки.Значение;
                         }
                     }
                     else
                     {
                         info.CellValue = null;
                     }
                 }
             }
         }
     }
     base.EndUpdate();
 }
Beispiel #2
0
        protected override void OnSaveCellInfo(GridSaveCellInfoEventArgs e)
        {
            int rowIndex = e.RowIndex;
            int colIndex = e.ColIndex;

            if ((rowIndex > 0) && (colIndex > 0))
            {
                GridStyleInfo style = e.Style;
                if ((style.Tag != null) && (this.ЯчейкиДанных != null))
                {
                    string str = ЯчейкаМетаструктуры.ПолучитьКодЯчейки(style.Tag.ToString());
                    if (this.ЯчейкиДанных.СодержитИндекс(str))
                    {
                        ТипЯчейки ячейки = this.ЯчейкиДанных[str];
                        if (style.CellType == "FormulaCell")
                        {
                            ячейки.Значение = e.Style.FormattedText;
                        }
                        else
                        {
                            if (ячейки is СсылкаНаСправочник)
                            {
                                if (e.Style.CellValue is ЗаписьСправочника)
                                {
                                    ячейки.Значение = e.Style.CellValue;
                                    e.Style.Text    = (ячейки as СсылкаНаСправочник).ЗначениеСтрокой;
                                }
                                if (e.Style.CellValue == null)
                                {
                                    ячейки.Значение = null;
                                    e.Style.Text    = string.Empty;
                                }
                            }
                            else
                            {
                                ячейки.Значение = e.Style.Text;
                            }
                            base.ЭкраннаяФорма.ДанныеИзменились = true;
                            if (ячейки.ТолькоЧтение)
                            {
                                this.УстановитьСтильЯчейкиТолькоЧтение(style);
                            }
                            else if (ячейки.Описание.ОбязательноДляЗаполнения)
                            {
                                this.УстановитьСтильОбязательнойДляЗаполненияЯчейки(style, ячейки.ЗначениеЗаполнено);
                            }
                            else if ((base.ВариантОткрытия == ВариантОткрытияФормы.Чтение) || (base.ВариантОткрытия == ВариантОткрытияФормы.СводнаяФормаБезРедактирования))
                            {
                                base.УстановитьСтильНередактируемойЯчейки(style);
                            }
                            else
                            {
                                base.УстановитьСтильРедактируемойЯчейки(style);
                            }
                        }
                    }
                }
            }
        }
Beispiel #3
0
        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();
                    }
                }
            }
        }