小编Phi*_*ore的帖子

需要控件和对象之间的双向LiveBindings

在Delphi XE2 LiveBindings中,我需要将任何类型的VCL控件绑定到任意(非组件)对象上的任何类型的属性.我可以单向做到这一点.但我需要双向进行.

假设我想将TPerson.PersonName:string绑定到TEdit.Text.

我现在拥有的很简单.

  • 创建一个新的VCL应用程序,添加一个TBindScope,TBindingsList,TEdit.
  • 创建名为person1的TPerson实例.
  • 使用BindingList,添加TBindExpression属性.
  • 使用BindExpression
    • 将ControlComponent设置为Edit1
    • 将ControlExpression设置为'Text'
    • 将SourceComponent设置为BindScope1
    • 将SourceExpression设置为PersonName
  • 添加一个按钮; 到我添加的Click事件:BindScope1.DataObject:= person1;
  • 添加一个按钮; 我添加的Click事件(只有一个是必要的,但直到它工作,我会尝试它们两个).
    • TBindings.Notify(发件人,'');
    • BindingsList1.Notify(sender,'');

第一个按钮在第一个方向上绑定.第二个按钮似乎永远不会将值写回person1.PersonName属性.

我已经尝试了通知代码,绑定方向,绑定类型,表达式,SourceMember等.有时我在bindexpression配置中得到运行时错误,其余时间绑定只是单向的.

我希望单击第二个按钮,看到写入person1.PersonName的Edit1.Text的内容.

如果我必须从代​​码中完成所有这些,我会考虑它并且这样的例子是受欢迎的,但我真的想通过设计师尽可能地做到这一点.

请注意,我对两个控件之间的绑定不感兴趣.

另请注意,我已经下载并检查了LiveBinding示例项目,但没有找到任何执行此操作的项目.如果这是错误的,请在指出时具体说明.我也读过DocWiki.除了使用DB LiveBinding控件之外,它不包括双向绑定.我没有使用DB LiveBinding控件,也没有使用DataSet.所以,除非你能向我解释为什么要使用它们,否则我不需要任何有关这些控件的信息.

delphi delphi-xe2 livebindings

19
推荐指数
1
解决办法
5851
查看次数

标签 统计

delphi ×1

delphi-xe2 ×1

livebindings ×1