DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: cuiqingbo
今日帖子: 20
在线用户: 16
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2022/4/27 18:26:31
标题:
呼叫牛人pcplayer,怎么livebinding一个FMX grid设计时添加的列? 浏览:1434
加入我的收藏
楼主: 动态绑定一个dataset和grid很简单,只要将dataset里的*和grid的*连接即可。但如果在grid里添加了column,然后将dataset里的某个字段与这个column对应,在建立连接时会出现一个属性选择对话框,但没有找到text或caption这类属性。
你对livebinding研究很深,请指导下,谢谢。
----------------------------------------------
-
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2022/4/27 20:54:24
1楼: stringgrid里添加字段然后与dataset联接比较好做。
----------------------------------------------
-
作者:
男 emailx45 (emailx45) ▲▲▲▲△ -
普通会员
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
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2022/4/27 21:20:55
3楼: 用代码连就复杂了。应该可以手动连的。
建一个日期型column,与日期字段连接,但是找不到应该连接column组件的哪个属性
此帖子包含附件:
PNG 图像
大小:47.0K
----------------------------------------------
-
作者:
男 emailx45 (emailx45) ▲▲▲▲△ -
普通会员
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
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2022/4/27 21:34:19
5楼: 上面这个没有要绑定的DateColumn1参数啊。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2022/4/27 21:55:59
6楼: 你的意思是,比如这个 DataSet 有3个字段,你只想让 Grid 出来 2 个字段?

是这个意思吧?
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2022/4/27 21:59:09
7楼: 看图
此帖子包含附件:
JPEG 图像
大小:220.0K
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2022/4/27 22:00:56
8楼: 上面的图是这样的:

FireMonkey

FdMemo1 有3个字段,设计期我给了它3条记录的数据。

有个 Grid1,我在设计期,可视化绑定,拉了两个字段过去。因此在 Grid 里面就有 2 个字段的显示。
----------------------------------------------
-
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2022/4/27 22:01:45
7楼: 是的,grid和dataset*连*很简单,但不能定制column列
如果在grid里添加列,然后与grid里的指定字段连接,我就可以定制列的格式了。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2022/4/27 22:05:02
9楼: 可视化拉线构成的绑定关系,在设计期的界面上,会出来一个 BindingsList1

双击这个 BindingsList1,会出来一个窗口,这个窗口里面有一条绑定,名字叫做:

LinkGridToDataSourceBindSourceDB1

选中这条绑定,属性面板里面,它有一个属性:Columns;

点开这个属性,出来一个小框,里面就是我拉线绑定的那两个字段。

因此,你在这个小框里面,可以通过任意增加删除你要绑定的字段的方式,而不是通过拉线的方式,来实现你想要显示哪些字段在 Grid 里面。
----------------------------------------------
-
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2022/4/27 22:07:15
9楼: 可是我在grid里建一个DateColumn列,然后与fdquery里的一个日期型字段billdate连接时,是出一个3楼图示的对话框,我不知道应该选那个属性,如果选autocapture(自动适配),运行时不会出现任何数据。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2022/4/27 22:09:07
10楼: 我增加了一个 Grid

一个是绑定指定的2个字段
一个是直接把 FdMemoTable1 的星号拉到 Grid 的星号,也就是绑定了所有字段。

下面是运行后的界面图
此帖子包含附件:
JPEG 图像
大小:59.7K
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2022/4/27 22:20:45
11楼: 9楼的操作我也试过,不能那样操作。

而是去 Grid 右键点击的菜单 Column Editor 里面去增加一个 Column,选择这个 Column 后,在属性面板里面指定:1. Column 类型为 DateColumn;2. 对应的字段名字。

这样的操作,和我上面说的双击 BindingList1 然后进行的操作,最终是一样的。

看图:
此帖子包含附件:
JPEG 图像
大小:182.6K
----------------------------------------------
-
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
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。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2022/4/28 10:57:41
13楼: 你的操作是:为 Grid 增加列 -- 》 拉星号xian 连接 DataSource 和 Grid ---》 然后增加的列就消失了;


你仔细看看我前面两个贴,顺序应该是:

1. 拉星号连接 DataSource 和 Grid;
2. 双击 BindList1,在弹出来的窗口里面,右边那个 LinkGridToDataSourceBindSourceDB1 选中,去它的属性面板里面,添加 Column

3. 或者,右键 Grid 打开 Column Editor;添加 Column
----------------------------------------------
-
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2022/4/28 11:29:07
14楼: 是的,按你的步骤为grid添加的列会转换为LinkGridToDataSourceBindSourceDB1的属性,这个时候列的显示是不可定制的。
如果不用livebinding连接grid,直接用grid的column edit添加列,是可以控制一些列的显示特征,但用livebinding连接grid后,这些预先定义的列都会被系统删除。
我的目标是定制列的显示格式,列如日期和货币的显示格式,为LinkGridToDataSourceBindSourceDB1添加的列会有一个customformat属性,这个属性可以定制列的显示属性,但使用非常复杂,不是用yyyy-mm-dd,而是使用函数,这个没有学习资源,不会搞。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2022/4/28 18:34:18
15楼: 楼上,你把顺序搞错了。我上面那个贴已经说得很清楚了。

如果先新建一个 Column 再建立绑定关系,先建的 Column 就没有了。

所以要把顺序换过来,先建立绑定关系,再去自己定义 Column,定义的时候可以选择是 TDate 类型的 Column.
----------------------------------------------
-
作者:
男 sxqwhxq (步惊云) ★☆☆☆☆ -
普通会员
2022/4/28 19:55:49
16楼: 把顺序倒过来也一样,最终增加的colunm依然是LinkGridToDataSourceBindSourceDB1的两个属性列而不是grid的列对象,无法定制format
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行140.625毫秒 RSS