Ejemplo n.º 1
0
        //Добавляет в текущую ячейку ссылку на выделенный параметр, field - имя поля
        //Транзакция создается из одной ячейки и добавляется в Transactions
        public void AddLink(LinkField field)
        {
            try
            {
                if (!GeneralRep.CheckOneSheet(true))
                {
                    return;
                }
                Shape sh = _book.ActiveShape();
                var   lt = _book.CurLinkType.ToLinkType();
                if (sh != null && (lt != LinkType.Absolute && lt != LinkType.AbsoluteCombined && lt != LinkType.Combined && lt != LinkType.Result && lt != LinkType.System || (sh.Type != MsoShapeType.msoTextBox && sh.Type != MsoShapeType.msoGroup)))
                {
                    return;
                }

                var    tlist = new Transaction();
                string res   = "Project=" + CurProject.Code + ";Field=" + field.ToEnglish() + ";Code=" + CurParam.FullCode + ";" + "CellComment=" + CellComment.Text + ";SaveCode=" + GetSaveCode() + ";";
                if (!field.IsValueField())
                {
                    WriteValue(field, tlist);
                }
                else
                {
                    if (PropForm != null)
                    {
                        res += PropForm.PropsString;
                        if (!PropForm.PropsError.IsEmpty())
                        {
                            Different.MessageError(PropForm.PropsError, "Не правильно заполнены свойства ссылки");
                            return;
                        }
                    }
                    else
                    {
                        res += _book.CurLinkProps;
                        if (_book.CurLinkProps.IsEmpty())
                        {
                            Different.MessageError("Нужно заполнить свойства устанавливаемой ссылки");
                            return;
                        }
                    }
                }

                if (field != LinkField.Code && field != LinkField.CodeParam && field != LinkField.CodeSubParam)
                {
                    if (sh != null)
                    {
                        AddShapeLink(res, tlist, sh);
                    }
                    else
                    {
                        AddCellLink(res, tlist, GeneralRep.Application.ActiveCell);
                    }
                }
                if (sh == null)
                {
                    _book.BeforeTransaction();
                    MoveAfterLink();
                }
                _book.AddTransaction(tlist);
            }
            catch { }
        }