Delphi 如何使TProgressColumn与LiveBinding和数据集一起使用

Delphi 如何使TProgressColumn与LiveBinding和数据集一起使用,delphi,firemonkey,livebindings,tgrid,delphi-xe7,Delphi,Firemonkey,Livebindings,Tgrid,Delphi Xe7,我的目标是拥有一个带有多个列的TGrid,通过LiveBindings连接到TClientDataSet。其中一列为TProgressColumn类型 网格显示数据,但进度栏列不显示任何内容(即0%的进度) TProgressColumn连接到ftInteger类型的字段。此字段中的值介于0和100之间 我试过和福辛格尔在一起,但运气不好。 我通过ColumnStyle属性将列的类型设置为TProgressColumn,该属性在TLinkGridToDataSourceBindSourceDB/

我的目标是拥有一个带有多个列的TGrid,通过LiveBindings连接到TClientDataSet。其中一列为TProgressColumn类型

网格显示数据,但进度栏列不显示任何内容(即0%的进度)

TProgressColumn连接到ftInteger类型的字段。此字段中的值介于0和100之间

我试过和福辛格尔在一起,但运气不好。 我通过ColumnStyle属性将列的类型设置为TProgressColumn,该属性在TLinkGridToDataSourceBindSourceDB/Columns下可用

奇怪的是,当我使用TPrototypeBindSource生成值时,TProgressColumn可以工作,但只适用于ftUInteger值。ftInteger发电机故障

下面是一个小演示(Delphi XE7):

当我在TProgressCell.DrawCell()中放置断点并跳过Value.IsOrdinal和Value.IsType的两个条件时,ClampValue会收到一个值“Min”,即0。 传递给函数的值似乎有问题

使用TProgressColumn时有什么特别之处吗?我是否需要在TLinkGridToDataSourceColumn中使用CustomFormat、CustomParse

那是虫子还是我错过了什么

更新: 多亏了“nompa”,谜团才得以解开

事实上,“asInteger”是TField类的众所周知的属性,即:

someDataSet.fieldByName('myFieldName').asInteger

在CustomFormat属性中,您可以访问许多内容,包括self.asInteger属性。 更多信息请点击此处:


  • 默认情况下,该值为字符串,而非整数字段。在属性CustomFormat中写入一个integer。 该值将被视为整数,并且进度现在可见