/// <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); }
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); }
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)); }
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); }
/// <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)); }