导航:
论坛 -> DELPHI技术
斑竹:liumazi,sephil
作者:
2022/4/27 18:26:31
标题:
呼叫牛人pcplayer,怎么livebinding一个FMX grid设计时添加的列?
浏览:1194
加入我的收藏
楼主:
动态绑定一个dataset和grid很简单,只要将dataset里的*和grid的*连接即可。但如果在grid里添加了column,然后将dataset里的某个字段与这个column对应,在建立连接时会出现一个属性选择对话框,但没有找到text或caption这类属性。 你对livebinding研究很深,请指导下,谢谢。
----------------------------------------------
-
作者:
2022/4/27 20:54:24
1楼:
stringgrid里添加字段然后与dataset联接比较好做。
----------------------------------------------
-
作者:
2022/4/27 21:11:46
2楼:
in you HELP System you can find the answer: https://docwiki.embarcadero.com/RADStudio/Alexandria/en/Programatically_Binding_Created_Objects var BindingExpression1: TBindingExpression; BindingExpression2: TBindingExpression; begin { a binding expression that binds the two Integer properties of the given objects } BindingExpression1 := TBindings.CreateManagedBinding( { inputs } [TBindings.CreateAssociationScope([ Associate(MyObject1, 'o1'), Associate(MyObject2, 'o2') ])], 'o1.IntegerValue + o2.IntegerValue', { outputs } [TBindings.CreateAssociationScope([ Associate(MyResultObject, 'res') ])], 'res.IntegerValue', nil); { a binding expression that binds the two String properties of the given objects } BindingExpression2 := TBindings.CreateManagedBinding( { inputs } [TBindings.CreateAssociationScope([ Associate(MyObject1, 'o1'), Associate(MyObject2, 'o2') ])], 'o1.StringValue + o2.StringValue', { outputs } [TBindings.CreateAssociationScope([ Associate(MyResultObject, 'res') ])], 'res.StringValue', nil); end;
----------------------------------------------
The higher the degree, the greater the respect given to the humblest!RAD 11.3
作者:
2022/4/27 21:20:55
3楼:
用代码连就复杂了。应该可以手动连的。 建一个日期型column,与日期字段连接,但是找不到应该连接column组件的哪个属性
此帖子包含附件: 大小: 47.0K
----------------------------------------------
-
作者:
2022/4/27 21:26:18
4楼:
this dont help you; BindSourceDB1.DataSet.Fields.Add( FDQuery1.Fields.FieldByName('MyDateField') );
----------------------------------------------
The higher the degree, the greater the respect given to the humblest!RAD 11.3
作者:
2022/4/27 21:34:19
5楼:
上面这个没有要绑定的DateColumn1参数啊。
----------------------------------------------
-
作者:
2022/4/27 21:55:59
6楼:
你的意思是,比如这个 DataSet 有3个字段,你只想让 Grid 出来 2 个字段? 是这个意思吧?
----------------------------------------------
-
作者:
2022/4/27 21:59:09
7楼:
看图
此帖子包含附件: 大小: 220.0K
----------------------------------------------
-
作者:
2022/4/27 22:00:56
8楼:
上面的图是这样的: FireMonkey FdMemo1 有3个字段,设计期我给了它3条记录的数据。 有个 Grid1,我在设计期,可视化绑定,拉了两个字段过去。因此在 Grid 里面就有 2 个字段的显示。
----------------------------------------------
-
作者:
2022/4/27 22:01:45
7楼:
是的,grid和dataset*连*很简单,但不能定制column列 如果在grid里添加列,然后与grid里的指定字段连接,我就可以定制列的格式了。
----------------------------------------------
-
作者:
2022/4/27 22:05:02
9楼:
可视化拉线构成的绑定关系,在设计期的界面上,会出来一个 BindingsList1 双击这个 BindingsList1,会出来一个窗口,这个窗口里面有一条绑定,名字叫做: LinkGridToDataSourceBindSourceDB1 选中这条绑定,属性面板里面,它有一个属性:Columns; 点开这个属性,出来一个小框,里面就是我拉线绑定的那两个字段。 因此,你在这个小框里面,可以通过任意增加删除你要绑定的字段的方式,而不是通过拉线的方式,来实现你想要显示哪些字段在 Grid 里面。
----------------------------------------------
-
作者:
2022/4/27 22:07:15
9楼:
可是我在grid里建一个DateColumn列,然后与fdquery里的一个日期型字段billdate连接时,是出一个3楼图示的对话框,我不知道应该选那个属性,如果选autocapture(自动适配),运行时不会出现任何数据。
----------------------------------------------
-
作者:
2022/4/27 22:09:07
10楼:
我增加了一个 Grid 一个是绑定指定的2个字段 一个是直接把 FdMemoTable1 的星号拉到 Grid 的星号,也就是绑定了所有字段。 下面是运行后的界面图
此帖子包含附件: 大小: 59.7K
----------------------------------------------
-
作者:
2022/4/27 22:20:45
11楼:
9楼的操作我也试过,不能那样操作。 而是去 Grid 右键点击的菜单 Column Editor 里面去增加一个 Column,选择这个 Column 后,在属性面板里面指定:1. Column 类型为 DateColumn;2. 对应的字段名字。 这样的操作,和我上面说的双击 BindingList1 然后进行的操作,最终是一样的。 看图:
此帖子包含附件: 大小: 182.6K
----------------------------------------------
-
作者:
2022/4/27 22:57:23
12楼:
1、是的,我按pcplayer的步骤,确实可以让grid手动添加的列连上数据库指定字段了。 2、我用grid而不用stringgrid目的是,grid手动添加的列可以指定列的一些属性,例如指定为date日期型,并指定它的显示格式为yyyy-mm-dd.而这个stringgrid手动添加的列,没有这个属性。 3、问题是,要显示数据,必须为LinkGridToDataSourceBindSourceDB1指定grid属性,而指定后,手动添加的列就被系统删除了,当然自定义日期显示格式也没有了,系统显示的日期仍然是yyyy/mm/dd而不是yyyy-mm-dd。
----------------------------------------------
-
作者:
2022/4/28 10:57:41
13楼:
你的操作是:为 Grid 增加列 -- 》 拉星号xian 连接 DataSource 和 Grid ---》 然后增加的列就消失了; 你仔细看看我前面两个贴,顺序应该是: 1. 拉星号连接 DataSource 和 Grid; 2. 双击 BindList1,在弹出来的窗口里面,右边那个 LinkGridToDataSourceBindSourceDB1 选中,去它的属性面板里面,添加 Column 3. 或者,右键 Grid 打开 Column Editor;添加 Column
----------------------------------------------
-
作者:
2022/4/28 11:29:07
14楼:
是的,按你的步骤为grid添加的列会转换为LinkGridToDataSourceBindSourceDB1的属性,这个时候列的显示是不可定制的。 如果不用livebinding连接grid,直接用grid的column edit添加列,是可以控制一些列的显示特征,但用livebinding连接grid后,这些预先定义的列都会被系统删除。 我的目标是定制列的显示格式,列如日期和货币的显示格式,为LinkGridToDataSourceBindSourceDB1添加的列会有一个customformat属性,这个属性可以定制列的显示属性,但使用非常复杂,不是用yyyy-mm-dd,而是使用函数,这个没有学习资源,不会搞。
----------------------------------------------
-
作者:
2022/4/28 18:34:18
15楼:
楼上,你把顺序搞错了。我上面那个贴已经说得很清楚了。 如果先新建一个 Column 再建立绑定关系,先建的 Column 就没有了。 所以要把顺序换过来,先建立绑定关系,再去自己定义 Column,定义的时候可以选择是 TDate 类型的 Column.
----------------------------------------------
-
作者:
2022/4/28 19:55:49
16楼:
把顺序倒过来也一样,最终增加的colunm依然是LinkGridToDataSourceBindSourceDB1的两个属性列而不是grid的列对象,无法定制format
----------------------------------------------
-