Beispiel #1
0
        /// <summary>
        ///     Returns formatted and unformatted values of the cell from the current OLAP slice.
        /// </summary>
        /// <param name="CurrentCell">The data cell from the current OLAP slice</param>
        /// <param name="Value">An unformatted value of the cell</param>
        /// <param name="Formatted">A formatting properties of the cell</param>
        /// <returns>True, if the cell contains a value</returns>
        public virtual bool GetCellFormattedValue(IDataCell CurrentCell, out object Value,
                                                  out CellFormattingProperties Formatted)
        {
            var Address = CurrentCell.Address;

            Formatted = new CellFormattingProperties();
            var Result = GetCellValue(Address, out Value, out Formatted);

            if (Result)
            {
                if (Formatted.FormattedValue == null || Address.Measure.FCubeMeasure != null &&
                    Address.Measure.DefaultFormat != Address.Measure.FCubeMeasure.DefaultFormat)
                {
                    if (Value != null)
                    {
                        object V;
                        Formatted.FormattedValue =
                            Address.Measure.DoFormatMode(CurrentCell, Value, Address.MeasureMode, out V);
                        Value = V;
                        //if (Address.MeasureMode.Mode == MeasureShowModeType.smSpecifiedByEvent)
                        //    Value = V;
                        return(true);
                    }
                }
            }
            else
            {
                Formatted.FormattedValue = "";
            }
            return(Result);
        }
Beispiel #2
0
        private bool DoCalculate(OlapControl Grid, ICubeAddress Address, out object Value,
                                 out CellFormattingProperties Formatted)
        {
            var fEvent = new CalcMemberArgs();

            fEvent.fEvaluator = new Evaluator(Grid, Address);
            if (Address.IsCalculatedByExpression)
            {
                Value = DoCalculateExpression(Grid, Address, fEvent.fEvaluator);
                fEvent.ReturnValue = Address.Measure.FormatValue(Value, Address.Measure.DefaultFormat);

                Formatted = new CellFormattingProperties(fEvent.ReturnValue, fEvent.ReturnBackColor,
                                                         fEvent.ReturnForeColor,
                                                         fEvent.fFontStyle, fEvent.fFontName, fEvent.fFontSize);

                return(Value != null);
            }

            fEvent.fValue = null;
            Grid.EventCalcMember(fEvent);

            Formatted = new CellFormattingProperties(fEvent.ReturnValue, fEvent.ReturnBackColor, fEvent.ReturnForeColor,
                                                     fEvent.fFontStyle, fEvent.fFontName, fEvent.fFontSize);

            Value = fEvent.ReturnData;
            return(Value != null);
        }
Beispiel #3
0
        internal bool GetCalculatedCellValue(ICubeAddress Address, out object Value,
                                             out CellFormattingProperties Formatted)
        {
            if (Address.Measure != null && Address.Measure.AggregateFunction == OlapFunction.stCalculated)
            {
                return(DoCalculate(FGrid, Address, out Value, out Formatted));
            }

            if (Address.FLevelsAndMembers.Values.Any(m => m.MemberType == MemberType.mtCalculated))
            {
                return(DoCalculate(FGrid, Address, out Value, out Formatted));
            }

            Value     = null;
            Formatted = new CellFormattingProperties("");
            return(false);
        }
        /// <summary>
        ///     Returns formatted and unformatted values of the cells from the current OLAP
        ///     slice.
        /// </summary>
        /// <returns>True, if the cell contains a value</returns>
        /// <param name="CurrentCell">The data cell from the current OLAP slice</param>
        /// <param name="Value">An unformatted value of the cell</param>
        /// <param name="Formatted">Formatting properties of the cell</param>
        public override bool GetCellFormattedValue(IDataCell CurrentCell, out object Value,
                                                   out CellFormattingProperties Formatted)
        {
            var Address = CurrentCell.Address;

            Value = null;
            var M = GetMetaline(Address.FLevelsAndMembers.Keys);

            Formatted = new CellFormattingProperties("");
            if (Address.Measure == null)
            {
                return(true);
            }
            if (CalculatedByServer(Address.Measure))
            {
                if (IsNativeDataPresent(Address.MeasureMode))
                {
                    var L      = M.GetLine(Address.FHierID, Address.Measure, Address.MeasureMode) as MdLine;
                    var Result = L.GetCellFormatted(Address, out Value, out Formatted);
                    if (!Result)
                    {
                        return(GetCalculatedCellValue(Address, out Value, out Formatted));
                    }
                    return(true);
                }
                else
                {
                    var L = M.GetLine(Address.FHierID, Address.Measure,
                                      IsNativeDataPresent(Address.MeasureMode)
                            ? Address.MeasureMode
                            : Address.Measure.ShowModes[0]) as MdLine;
                    object V;
                    var    Result = L.GetCell(Address, out Value);
                    if (Value != null)
                    {
                        Formatted.FormattedValue =
                            Address.Measure.DoFormatMode(CurrentCell, Value, Address.MeasureMode, out V);
                        Value = V;
                        return(true);
                    }
                    return(false);
                }
            }
            return(GetCalculatedCellValue(Address, out Value, out Formatted));
        }
Beispiel #5
0
        internal bool GetCellFormatted(ICubeAddress Address, out object Value, out CellFormattingProperties Formatted)
        {
            CheckLineAlive();

            Formatted = new CellFormattingProperties();
            var i = Array.BinarySearch(fIndexes, Address.FLineIdx);

            if (i < 0)
            {
                Value = null;
                Formatted.FormattedValue = "";
                return(false);
            }
            Value = fData[i].Value;
            if (Address.Measure != null && Address.Measure.FCubeMeasure != null &&
                Address.MeasureMode.Mode == MeasureShowModeType.smNormal &&
                Address.Measure.DefaultFormat != Address.Measure.CubeMeasure.DefaultFormat)
            {
                Formatted.FormattedValue = Address.Measure.FormatValue(Value, Address.Measure.DefaultFormat);
            }
            else
            {
                var d = fData[i];
                Formatted.FormattedValue = d.FormattedValue;
                if (d.Colors != null)
                {
                    Formatted.BackColor = d.Colors.BackColor;
                    Formatted.ForeColor = d.Colors.ForeColor;
                }
                if (d.Fonts != null)
                {
                    Formatted.FontStyle = d.Fonts.Style;

                    Formatted.FontFamily = d.Fonts.FontName;
                    Formatted.FontSize   = d.Fonts.FontSize;
                }
            }
            return(true);
        }
Beispiel #6
0
        /// <summary>
        ///     Calculates a nonformatted value of the Cube cell specified by its
        ///     multidimensional address.
        /// </summary>
        /// <returns>True, if the cell contains a value</returns>
        /// <param name="Address">The multidimensional address of the cell</param>
        /// <param name="Value">Returned value of the cube cell</param>
        /// <param name="Formatted">Returned formatted value of the cube cell</param>
        public bool GetCellValue(ICubeAddress Address, out object Value, out CellFormattingProperties Formatted)
        {
            Value     = null;
            Formatted = new CellFormattingProperties();
            var M = GetMetaline(Address.FLevelsAndMembers.Keys);

            if (Address.Measure == null)
            {
                return(true);
            }
            if (CalculatedByServer(Address.Measure))
            {
                var L = M.GetLine(Address.FHierID, Address.Measure,
                                  IsNativeDataPresent(Address.MeasureMode) ? Address.MeasureMode : Address.Measure.ShowModes[0]);
                var Result = L.GetCell(Address, out Value);
                if (!Result)
                {
                    return(GetCalculatedCellValue(Address, out Value, out Formatted));
                }
                return(true);
            }
            return(GetCalculatedCellValue(Address, out Value, out Formatted));
        }