今天看到别人用 DBGrid 做的显示数据时数据的格式为 11,097.44 ,而一般的是 11097.44 ,这个 ","是怎
么加上去的呢?我首先想到的是用 OnGetText 这个事件,于是就去查看这个程序的源码,都看了一遍,怎么没
有这个 onGetText 的事件呢?肯定没有用这个事件,那是怎么用得呢?详细的分析,噢,找到了,是永久字段
的 DisplayFormat 的属性在控制. 可是我不爱用永久字段,怎么办呢?好说,试试 Table1.FieldByName('字
段名').DisplayFormat = '###,###.###';
,错了,没有这个 DisplayFormat 的属性,怎么会没有呢?再看看源码,原来 DisplayFormat 是永久字段才
有的属性
TAggregateField,TDateTimeField,TNumericField,TSQLTimeStampField
从上面这四个字段类型才有 DisplayFormat 属性,知道这个了,把程序这样改就行了
db.TBCDField(table1.FieldByName('buyin_amt')).DisplayFormat := '###,###.###';
这样也行,
db.TNumericField(table1.FieldByName('buyin_amt')).DisplayFormat := '###,###.###';
因为 TBCDField 继承自 TNumericField 字段,如果对字段的继承不怎么明白,在设计时添加不同的永久字段
然后就很容易的看到是从哪继承来的.
附 delphi 帮助中对 DisplayFormat 的解释(本人的英语水平很差,所有就一个词一个词的译吧,不会的词用
金山词霸译)
Determines how a numeric field's value is formatted for display in a data-aware control.
怎么使一个数字类型的字段值按某种格式在数据感知控件中显示
property DisplayFormat: String;
Description
Use the DisplayFormat property to override automatic formatting of a field for display purposes.
依照某种意图(purposes)来显示时要使用 DisplayFormat 属性来覆盖一个字段的自动显示格式
Note: DisplayFormat affects only the display of the field's data. It does not affect the
注意: DisplayFormat 仅仅影响这个字段数据的显示 , 它不会影响有效性,比如使用 asString 把一个
validity of strings assigned to a numeric field using the AsString property.
string 赋给一个数字类型的字段。
the value of DisplayFormat is a string that encodes the formatting of numeric data using the
isplayFormat 的值是一个字符串,它的数字数据的编码格式使用
specifiers in the following table:
下面表格中指定的
Specifier Represents ( 描述 )
0 Digit placeholder. If the value being formatted has a digit in the position where the "0"
appears in the format string, then that digit is copied to the output string. Otherwise, a "0" is
stored in that position in the output string.
0 是一个数字占位符,如果一个数据中有一个数字在 格式字符中‘0’的位置出现,则把 该数字复制到这个位置, 否则,会以 0 来添充这个位置.
# Digit placeholder. If the value being formatted has a digit in the position where the "#"
appears in the format string, then that digit is copied to the output string. Otherwise, nothing
is stored in that position in the output string.
# 指原样显示
. Decimal point. The first "." character in the format string determines the location of
the decimal separator in the formatted value; any additional "." characters are ignored. The
actual character used as a the decimal separator in the output string is determined by the
DecimalSeparator global variable. The default value of DecimalSeparator is specified in the
Number Format of the Regional Settings section in the Windows Control Panel.
这是一个十进制的分隔符,只能有一个,多余的就会忽略
, Thousand separator. If the format string contains one or more "," characters, the output
will have thousand separators inserted between each group of three digits to the left of the
decimal point. The placement and number of "," characters in the format string does not affect
the output, except to indicate that thousand separators are wanted. The actual character used as
a the thousand separator in the output is determined by the ThousandSeparator global variable.
The default value of ThousandSeparator is specified in the Number Format of the Regional Settings
section in the Windows Control Panel.
千分位的分隔符
E+ Scientific notation. If any of the strings "E+", "E-", "e+", or "e-" are contained in the
format string, the number is formatted using scientific notation. A group of up to four "0"
characters can immediately follow the "E+", "E-", "e+", or "e-" to determine the minimum number
of digits in the exponent. The "E+" and "e+" formats cause a plus sign to be output for positive
exponents and a minus sign to be output for negative exponents. The "E-" and "e-" formats output
a sign character only for negative exponents.
'xx'/"xx" Characters enclosed in single or double quotes are output as-is, and do not
affect formatting.
; Separates sections for positive, negative, and zero numbers in the format string.
The locations of the leftmost "0" before the decimal point in the format string and the rightmost
"0" after the decimal point in the format string determine the range of digits that are always
present in the output string.
The number being formatted is always rounded to as many decimal places as there are digit
placeholders ("0" or "#") to the right of the decimal point. If the format string contains no
decimal point, the value being formatted is rounded to the nearest whole number.
If the number being formatted has more digits to the left of the decimal separator than there are
digit placeholders to the left of the "." character in the format string, the extra digits are
output before the first digit placeholder.
The following table shows the effect of various format strings:
DisplayFormat Value Result Comment
#.## 12.2 12.2 Note extra digit to left of decimal still appears
#.00 2.5 2.50 Note extra zero: field will always show two decimal places
00.## .006 00.01 Note extra 0s to right of decimal point and rounding to two decimal
places.
To allow different formats for positive, negative, and zero values, the format string can contain
between one and three sections separated by semicolons.
One section: The format string applies to all values.
Two sections: The first section applies to positive values and zeros, and the second
section applies to negative values.
Three sections: The first section applies to positive values, the second applies to
negative values, and the third applies to zeros.
If the section for negative values or the section for zero values is empty, that is, if there is
nothing between the semicolons that delimit the section, the section for positive values is used
instead.
If the section for positive values is empty, or if the entire format string is empty, the value
is formatted using general floating-point formatting with 15 significant digits. General
floating-point formatting is also used if the value has more than 18 digits to the left of the
decimal point and the format string does not specify scientific notation.