Exemple #1
0
        /// <summary>
        /// 拷贝对象方法
        /// </summary>
        /// <returns></returns>
        public override RptItem Clone()
        {
            RptChart newOne = new RptChart(_part);

            newOne._data.Copy(_data);
            return(newOne);
        }
Exemple #2
0
        void OnInsertChart(object sender, Mi e)
        {
            _owner.Excel.DecorationRange = null;
            CellRange range = _owner.Excel.ActiveSheet.Selections[0];
            var       item  = new RptChart(_owner.GetContainer());

            _owner.Info.ExecuteCmd(RptCmds.InsertChart, new InsertCmdArgs(item, range));
            _owner.UpdateSelection();
        }
Exemple #3
0
 /// <summary>
 /// 加载图表
 /// </summary>
 /// <param name="p_chart"></param>
 void LoadChart(RptChart p_chart)
 {
     Dt.Cells.Data.Cell chartCell = _owner.Excel.Sheets[0].Cells[p_chart.Row, p_chart.Col];
     chartCell.RowSpan             = p_chart.RowSpan;
     chartCell.ColumnSpan          = p_chart.ColSpan;
     chartCell.Background          = new SolidColorBrush(Color.FromArgb(0XCC, 0XFF, 0XFD, 0XC5));
     chartCell.VerticalAlignment   = CellVerticalAlignment.Center;
     chartCell.HorizontalAlignment = CellHorizontalAlignment.Center;
     chartCell.FontFamily          = Res.IconFont;
     chartCell.FontSize            = 40;
     chartCell.Text = "\uE08D";
 }
Exemple #4
0
        public override object Execute(object p_args)
        {
            InsertCmdArgs args  = (InsertCmdArgs)p_args;
            RptChart      chart = args.RptItem as RptChart;
            CellRange     range = args.CellRange;

            chart.Row     = range.Row;
            chart.Col     = range.Column;
            chart.RowSpan = range.RowCount;
            chart.ColSpan = range.ColumnCount;
            chart.Part.Items.Add(chart);
            return(chart);
        }
Exemple #5
0
        /// <summary>
        /// 加载xml
        /// </summary>
        /// <param name="p_reader"></param>
        public virtual void ReadXml(XmlReader p_reader)
        {
            p_reader.MoveToElement();
            if (p_reader.IsEmptyElement)
            {
                p_reader.Read();
                return;
            }

            string name = p_reader.Name;

            p_reader.Read();
            while (p_reader.NodeType != XmlNodeType.None)
            {
                if (p_reader.NodeType == XmlNodeType.EndElement && p_reader.Name == name)
                {
                    break;
                }

                RptItem item = null;
                switch (p_reader.Name)
                {
                case "Text":
                    item = new RptText(this);
                    break;

                case "Table":
                    item = new RptTable(this);
                    break;

                case "Matrix":
                    item = new RptMatrix(this);
                    break;

                case "Chart":
                    item = new RptChart(this);
                    break;

                default:
                    if (item == null)
                    {
                        Kit.Error(string.Format("反序列化报表模板时错误,无法识别报表项【{0}】!", p_reader.Name));
                    }
                    break;
                }
                item.ReadXml(p_reader);
                Items.Add(item);
            }
            p_reader.Read();
        }
Exemple #6
0
        internal void LoadItem(RptChart p_item)
        {
            if (_item == p_item)
            {
                return;
            }

            _item = p_item;
            Kit.RunAsync(() =>
            {
                _item.Data.Changed -= OnValueChanged;
                _fv.Data            = _item.Data;
                _item.Data.Changed += OnValueChanged;
                InitChart();

                string dataSourceName = _item.Data.Str("tbl");
                if (string.IsNullOrEmpty(dataSourceName))
                {
                    // 如果未选中唯一的数据源,默认选中
                    var ls = _item.Root.Data.DataSet;
                    if (ls != null && ls.Count == 1)
                    {
                        // 使用initVal 避免重做撤消命令产生冗余操作。
                        _item.Data.InitVal("tbl", ls[0].Str("name"));
                        DataDropBox(ls[0].Str("name"));
                    }
                }
                else
                {
                    for (int i = 0; i < _item.Root.Data.DataSet.Count; i++)
                    {
                        if (_item.Root.Data.DataSet[i].Str("name") == dataSourceName)
                        {
                            DataDropBox(dataSourceName);
                            break;
                        }
                    }
                }
            });
        }