Listview 使用自定义格式,然后

Listview 使用自定义格式,然后,listview,delphi,firemonkey,Listview,Delphi,Firemonkey,我有一个delphi多设备表单,其中的listview通过livebindings链接到TFDMEMtable。我在listview中显示该表中的4个字段。第三个日期可以合法地为空。我试图在相应的LinkListControlToField条目上使用CustomFormat来设置所需的日期时间格式,并处理空日期。我在IDE中设置它,而不是分配它。这是我正在使用的基本模型: IfThen(Self.Owner.UpdateDate.IsNull,%s,FormatDateTime('dd/mm/y

我有一个delphi多设备表单,其中的listview通过livebindings链接到TFDMEMtable。我在listview中显示该表中的4个字段。第三个日期可以合法地为空。我试图在相应的LinkListControlToField条目上使用CustomFormat来设置所需的日期时间格式,并处理空日期。我在IDE中设置它,而不是分配它。这是我正在使用的基本模型:

IfThen(Self.Owner.UpdateDate.IsNull,%s,FormatDateTime('dd/mm/yyyy hh:nn',StrToDateTime(%0:s)))
我同样可以测试字符串%s是否为空-相同的差异。以上操作正常,直到它到达日期为空的第一条记录(因此%s为空)。在此之后,它将停止显示listview数据。我尝试过各种各样的技巧来指定“true”值,例如“,”,ToStr(%s)等


谢谢你的建议。

好的,我终于收到了。如果我直接使用该字段,而不是将%s转换为日期,它将起作用。e、 g

IfThen(Self.Owner.UpdateDate.IsNull,%s,FormatDateTime('dd/mm/yyyy hh:nn',Self.Owner.UpdateDate.AsDateTime))
或者,或者:

IfThen(%s="",%0:s,FormatDateTime('dd/mm/yyyy hh:nn',Self.Owner.UpdateDate.AsDateTime))

对于那些有兴趣实际获得援助的人,请忽略那些反对票——他们完全错了。上述两种解决方案都有效(Delphi 10.2.3)。请参阅我下面的评论了解更多细节

很抱歉,Delphi应该抱怨这两个示例都包含语法错误,第一种情况是
%s
,第二种情况是
%s=“”
%0:s
。Delphi不使用双引号作为字符串
''
是空字符串(两个单引号)。通常delphi不使用双引号,但在这种情况下它们是可以接受的-它是有效的-并且有很多例子在这个特定的上下文中使用双引号。如果我仅用%s替换%0:s,它将不起作用。第二次使用%s需要该索引。我认为这两张反对票是毫无根据的,也是苛刻的。
%s
不是一个字符串<代码>'%s'为空。