TDBGrid中动态日期型字段的显示格式设定(100分)

  • 主题发起人 刘玉升
  • 开始时间

刘玉升

Unregistered / Unconfirmed
GUEST, unregistred user!
在TDBGrid控件中,动态生成的日期型字段如何设定其显示格式。
年份由2位变为4位.
 
TDateTimeField.DisplayFormat属性可用来指定DateTime类型字段的显示格式,
使用方法为:

with MyDataSet do
begin
...
Open;
(FieldByName('xxx') as TDateTimeField).DisplayFormat:='xxx';
...
end;

具体的格式字符串及含义请看Delphi Help关于TDateTimeField.DisplayFormat
 
将Windows95/98 的 控制面板-区域设置-日期-短日期样式
设为yyyy-mm-dd,即可.
 
两个说的都行,parable的方法更省,可以派分了!
 
非也非也,
到控制面板里改设置:
1、这种手工的方式<font color=darkgreen><B>野狐禅</B></font>味道太重
就算要改也应该是在程序中改注册表之类来实现

2、功能太弱
如果要显示为"xxxx年xx月xx日"或者其他特殊格式,就不行了

所以我觉得根本的解决办法是
TDateTimeField.DisplayFormat

或者干脆在
TField.OnGetText事件中自己写代码来解释日期,返回结果
用这种方法要注意判断DisplayText: Boolean参数的值
 
改国家地区的设置, 并且改bde中的设置(configuration/system/format/date,
fourdigityear 设为true
 
非也非也。
1、第一种方法受环境的约束,不爽。
2、第二种方法要在每个地方加语句,也不爽。

其实有两个全局的变量设置一下就可以了:

DateSeparator :='-';
ShortDateFormat :='yyyy-mm-dd';

最后设置在主窗口CREATE事件中。
这样,程序中所有的地方都显示同一种格式,
DATETIMETOSTR函数也返回这种格式,用起来爽多了。
 
作为一个程序员,应该像蚯蚓,yck那样去解决问题,不要动不动就修改操作系统.
万一机器上有另一个程序需要别的格式显示日期怎么办???
 
cAkk:
你第一次捧我的场啊~~ 感谢感谢
不过说实话,碰到这么简单的问题想不捧场都难...
 
60:提出了最中肯的意见。
30:提出了最方便快捷的意见。
10:提出了一点有建设性的意见。

结束问题了。
 
我竟然只知道说话,忘记给分了。:)
 
非也,非也,应该yck的分最多!因为蚯蚓的方法是最普通的方法,我早知道,
我相信Yck也早知道,还有就是大富翁的绝大多数人也都知道。这样的方法对大多数人
都没有帮助。而我的和Yck的方法都是修改操作系统的环境变量。我的是永久的、全局的修改,而Yck的是临时的局部的修改(即只对当前程序有效)。我相信这种方法蚯蚓
未必知道,而还很多人也都不知道。可以给大多数人帮助!编程首先就要了解操作
系统,这不是什么野狐禅,如果简单的“环境变量”都不会运用,反而还嘲笑之,则
实在让人费解!
 
照说是不应该有此问题的,其实YCK用的也无非是常量。
使用一个全局常量,在需要时直接使用常量代号而不用常数,以便于统一修改,
这不正是常量的用处吗?每本教科书在说到为什么要用常量时总会提到这一句吧?
YCK的做法非常对,用一个固定的字符串常量,以后用到时直接代这个,
修改时就方便多了。当然这里也可用字符串变量。
如果这个量用得较多,就可以体现优越性了。这与您的方法不同。他不是所谓的“环境变量”。
他用的只是常量,是对蚯蚓先生说法的一种补充和扩展。没了蚯蚓先生的方法,他的也无从存在。
这正是我给他10分的原因。-- "10:提出了一点有建设性的意见。"
 
DateSeparator、ShortDateFormat并非常量,在SysUtils中定义如下
var CurrencyString: string;
var ShortDateFormat: string;
如果不对它们赋值则自动取注册表中的值(即在控制面板中设定的值),它们的值
在程序中是可以修改的,怎么会是常量!
所以说我的方法和Yck的方法是殊途同归。
关于环境变量的提法,在Dos,Windows以及Unix系统中都存在的。


 
顶部