CGXStyle::SetFormat

CGXStyle& SetFormat(unsigned ui);

ui

Specifies the format type. See below.

Return Value

Returns the this pointer.

Remarks

Objective Grid lets you format number values for static cells and specify the precision of the value (number of significant digits). The formatted value will be displayed only for static cells. If you start editing a cell the original value will be displayed.

For example, if you store the value 122.2345 into a cell and set the format to be fixed with two decimals, 122.23 will be displayed in the cell. When you click into the cell the cell value will change to 122.2345. Once you leave the cell the display text will change back to 122.23.

When you apply numeric formatting to a cell it will only affect the cell if the value type is GX_VT_NUMERIC (see SetValueType).

The formatting of numeric cells is done with the GXFormatText method.

By default, when using the GX_FMT_FIXED format type only, Objective Grid displays 0.0, with any precision, as negative. This is not always desirable.
Objective Grid uses  SetNegativeZeroFlag(BOOL bDisplayNegativeZero = TRUE) to allow the end-user to change the default of TRUE to FALSE.

For example, if you store the value 0.00004 with a precision of 4 using SetPlaces(4), the number displayed is -0.0000 by default.
However, if you set  SetNegativeZeroFlag(FALSE), the number is displayed as 0.0000.
Here is an example, as written in a Grid application's View.cpp file in Grid's OnIntialUpdate() function:

SetStyleRange(CGXRange(nRow, nCol), CGXStyle().SetValue("-0.00004").SetValueType(GX_VT_NUMERIC).SetFormat(GX_FMT_FIXED).SetNegativeZeroFlag(FALSE));

Also note that this formatting is ONLY applied when the number displayed is ALL zeroes.
If we change the above example's value to 0.00005 or higher, with the same precision of 4, the number displayed will be 0.0001.

Objective Grid supports the following formats. For certain format types you can also specify the number of places (refererred to as 'N' in the following table).

FormatIdDescriptionDefinition
GX_FMT_FLOATScientificDisplays the number in scientific notation (exponent form) with N significant digits.
GX_FMT_FIXEDFixedDisplays the number using a fixed number of decimal places, specified by N.
GX_FMT_GENGeneralDisplays the number in fixed format or scientific notation, whichever fits. Trailing zeros are not displayed.
GX_FMT_DOLLARSDollarsDisplays the number with a leading $ sign and with comma delimiters, as in $1,000,000. Negative values are displayed in parentheses.
GX_FMT_EUROEuroDisplays the number with a leading euro sign(€) and with comma delimiters, as in €1,000,000. Negative values are displayed with a leading minus (-) sign followed by a euro sign and with comma delimiters as in -€456,789.0000000000000. Negative values are not displayed in parentheses.
GX_FMT_POUNDPoundDisplays the number with a leading pound sign(£) and with comma delimiters, as in £1,000,000. Negative values are displayed with a leading minus (-) sign followed by a pound sign and with comma delimiters as in -£456,789.0000000000000. Negative values are not displayed in parentheses.
GX_FMT_YENYenDisplays the number with a leading yen sign(¥) and with comma delimiters, as in ¥1,000,000. Negative values are displayed with a leading minus (-) sign followed by a yen sign and with comma delimiters as in -¥456,789.0000000000000. Negative values are not displayed in parentheses.
GX_FMT_COMMACommaDisplays the number with comma delimiters, as in 1,000,000. Negative values are displayed in parentheses.
GX_FMT_HEXHexDisplay the number in hexadecimal notation. For example, the value 31 is displayed as 1F.
GX_FMT_LOGICLogicDisplays the value 0 as 0, the value 1 as 1, and all other values as ?.
GX_FMT_DAY_MONTH_YEARDD-MMM-YYDisplays the integer portion of a date/time value as a Gregorian date, in the format 01-Aug-91.
GX_FMT_DAY_MONTHDD-MMMDisplays the integer portion of a date/time value in the format 01-Aug.
GX_FMT_MONTH_YEARMMM-YYDisplays the integer portion of a date/time value in the format Aug-91.
GX_FMT_DATEsystemDisplays the integer portion of a date/time value in the format specified by the system settings.
GX_FMT_HIDDENHiddenThe cell contents are not displayed.
GX_FMT_TIMEsystemDisplays the fractional portion of a date/time value in the format specified by the system settings.
GX_FMT_PERCENTPercentDisplay the number as a percentage, multiplying it by 100. For example, the value 0.1 is displayed as 10.00%.
GX_FMT_TEXTTextFor cells which contains formulas, the formula itself is displayed, rather than the computed value of the cell.
GX_FMT_INTL_DATEDD.MM.YYYYDisplays the integer portion of a date/time value in the format 01.08.1991.
GX_FMT_ISO8061_DATEYYYY-MM-DDDisplays the integer portion of a date/time value in the ISO 8061 date format 1991-08-01.
GX_FMT_DATETIMEMM/DD/YY HH:MMDisplays the date and time according to the system settings.
GX_FMT_TIME_HM_AMPMHH:MM AM/PMDisplays the time only portion of a date/time in the format11:03 AM
GX_FMT_TIME_HMS_AMPMHH:MM:SS AM/PMDisplays the time only portion of a date/time in the format11:03:15 AM
GX_FMT_TIME_HMHH:MMDisplays the time only portion of a date/time in the format13:03
GX_FMT_FIXED_PARENS(fixed)Displays the number using a fixed number of decimal places, specified by N, with negative values enclosed in parentheses.
GX_FMT_MIXED_FRACTIONSmixed fractionDisplays the number as a mixed fraction (a whole number followed by a proper fraction). The value N specifies the maximum number of digits for the denominator of the fractional part. N is restricted to values between 1 and 4.
GX_FMT_USER1User1if you override GXFormatText you might use
GX_FMT_USER2User2these format codes (GX_FMT_USER1 .. GX_FMT_USER4)
GX_FMT_USER3User3for your own currenct formatting (e.g. DM, Lira etc).
GX_FMT_USER4User4

Use CGXStyle::SetFormat to apply number formatting to cells.

Example:

      SetExpressionRowCol(nRow, 1, _T("General"));
      SetExpressionRowCol(nRow+1, 1, _T("7777.77"));
      SetStyleRange(CGXRange(nRow+1, 1), CGXStyle().SetFormat(GX_FMT_GEN).SetPlaces(15));
      SetExpressionRowCol(nRow, 2, _T("Fixed"));
      SetExpressionRowCol(nRow+1, 2, _T("7777.77"));
      SetStyleRange(CGXRange(nRow+1, 2), CGXStyle().SetFormat(GX_FMT_FIXED).SetPlaces(4));
      SetExpressionRowCol(nRow, 3, _T("Scientific"));
      SetExpressionRowCol(nRow+1, 3, _T("7777.77"));
      SetStyleRange(CGXRange(nRow+1, 3), CGXStyle().SetFormat(GX_FMT_FLOAT).SetPlaces(4));
      SetExpressionRowCol(nRow, 4, _T("Dollars"));
      SetExpressionRowCol(nRow+1, 4, _T("7777.77"));
      SetStyleRange(CGXRange(nRow+1, 4), CGXStyle().SetFormat(GX_FMT_DOLLARS).SetPlaces(2));
      SetExpressionRowCol(nRow, 5, _T("Euro"));		
      SetExpressionRowCol(nRow+1, 5, _T("7777.77"));
      SetStyleRange(CGXRange(nRow+1, 5), CGXStyle().SetFormat(GX_FMT_EURO).SetPlaces(2));
	  
      SetExpressionRowCol(nRow, 6, _T("Pound"));
      SetExpressionRowCol(nRow+1, 6, T("7777.77"));
      SetStyleRange(CGXRange(nRow+1, 6), CGXStyle().SetFormat(GX_FMT_POUND).SetPlaces(2));
 
      SetExpressionRowCol(nRow, 7, _T("Yen"));
      SetExpressionRowCol(nRow+1, 7, _T("7777.77")); 
      SetStyleRange(CGXRange(nRow+1, 7), CGXStyle().SetFormat(GX_FMT_YEN).SetPlaces(2));
	  
      SetExpressionRowCol(nRow, 8, _T("Comma"));
      SetExpressionRowCol(nRow+1, 8, _T("7777.77"));
      SetStyleRange(CGXRange(nRow+1, 8), CGXStyle().SetFormat(GX_FMT_COMMA).SetPlaces(2));
      SetExpressionRowCol(nRow, 9, _T("Percent"));
      SetExpressionRowCol(nRow+1, 9, _T(".77"));
      SetStyleRange(CGXRange(nRow+1, 9), CGXStyle().SetFormat(GX_FMT_PERCENT).SetPlaces(2));

See Also

 CGXStyle::SetValueType  CGXStyle::SetPlaces  CGXStyle::SetNegativeZeroFlag  GXFormatText

CGXStyle

 Class Overview |  Class Members