首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用TField.DisplayFormat格式化不在dataset中的字符串

使用TField.DisplayFormat格式化不在dataset中的字符串
EN

Stack Overflow用户
提问于 2011-12-15 02:08:30
回答 2查看 7.4K关注 0票数 4

连接到网格的DataSet具有:

代码语言:javascript
复制
TField.DisplayFormat := '$######.00'

我希望在我的网格的特定列中构建字符串列表,其中包括:

代码语言:javascript
复制
while NOT DataSet.EOF do
   StringList.Add(TField.DisplayText);

我曾希望速度能做到:

代码语言:javascript
复制
DataSet.DisableControls;

但这也禁用了DisplayFormat的应用程序。

不禁用控件意味着运行得非常慢(在过时的、被废弃的,“您应该放弃它now"-Paradox/BDE.)”)。

所以,我的问题是:

是否有使用与DFFormat相同的符号的格式化函数(例如,TField.DisplayFormat )?

那我就可以做:

代码语言:javascript
复制
 DataSet.DisableControls;
 while NOT DataSet.EOF do
   StringList.Add(DFFormat(TField.Value));

或者,由于只有几个数据类型,所以我可以执行下面的代码,找出创建格式字符串的方法:

代码语言:javascript
复制
 DataSet.DisableControls;
 while NOT DataSet.EOF do
   begin
     if TField.FieldType = ftString
        StringList.Add(AsString)     
     else if TField.FieldType = ftFloat then
        StringList.Add(Format(TField.Value, ...)
     else...

上面的代码不会比显示的更长,但我希望有一个使用TField的DisplayFormat的格式化函数。还是我要求得太多了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-12-15 02:35:09

DisplayFormat只适用于四个TField后代(TAggregateFieldTDateTimeFieldTNumericFieldTSQLTimeStampField)。在我看来,这对于其中三个人来说是很容易实现的:

代码语言:javascript
复制
function TFieldToDisplayFormat(const Fld: TField): string;
begin
  Result := Fld.AsString;
  if (Fld is TDateTimeField) then
    Result := FormatDateTime(TDateTimeField(Fld).DisplayFormat,
      TDateTimeField(Fld).AsDateTime)
  else if (Fld is TNumericField) then
    Result := FormatFloat(TNumericField(Fld).DisplayFormat,
      TNumericField(Fld).AsFloat)
  else if (Fld is TSQLTimeStampField) then
    Result := SQLTimeStampToString(TSQLTimeStampField(Fld).DisplayFormat,
       TSQLTimeStampField(Fld).AsSQLTimeStamp);
end;

// Sample use
while not DataSet.Eof do
  SL.Add(TFieldToDisplayFormat(WhatEverField));
票数 4
EN

Stack Overflow用户

发布于 2011-12-15 02:34:23

使用TField的格式函数取决于字段的类型,在您的情况下(对于TNumericField的后代),您必须使用传递字段值和DisplayFormat属性的FormatFloat作为参数。

代码语言:javascript
复制
FormatFloat(Field.DisplayFormat, Field.Value)
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8514269

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档