在窗体上添加 TrackBar1、Edit1、Label1, 然后设置属性(可在设计时):

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.BindingSource := TrackBar1;  //将 TrackBar1 的值绑定在 Edit1
  Label1.BindingSource := TrackBar1; //将 TrackBar1 的值绑定在 Label1
end;
{之后, Edit1.Text 和 Label1.Text 会同步 TrackBar1.Value 值}

不同类型值的沟通, 我想应该是依赖于 FM 组件新增的 Data 属性, 它是 Variant 类型的:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(TrackBar1.Data); //TrackBar1.Data <- TrackBar1.Value
  ShowMessage(Label1.Data);    //Label1.Data <- Label1.Text
  ShowMessage(Edit1.Text);    //Edit1.Data <- Edit1.Text
end;

有些控件没有 BindingSource 属性(如 TButton、TPanel), 是因为它没必要有(但在使用专用绑定控件时可以).
两个控件互为数据源后, 就可以互通数据了:

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.BindingSource := Edit2;
  Edit2.BindingSource := Edit1;
end;

如果给拥有 BindingSource 属性的控件指定了 BindingName ...:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.BindingName := 'bn1'; //   {可以通过其上层控件的 FindBinding() 方法找到它}
  ShowMessage(Self.FindBinding('bn1').ClassName);
  ShowMessage(TEdit(FindBinding('bn1')).Text);   {可以通过其上层控件的 Bingding[] 属性读取或修改其 Data 值}
  Self.Binding['bn1'] := 'NewText';
  ShowMessage(Self.Binding['bn1']); //NewText
end;

XE2 的绑定功能(不仅仅在 FM)比我之前的想象要强大得多, 还有 TBindingsList、TBindingsScope、TBindScopeDB、TBindNavigator ...

Delphi XE2 之 FireMonkey 入门(22) - 数据绑定: BindingSource、BindingName、FindBinding()、Binding[]的更多相关文章

  1. Delphi XE2 之 FireMonkey 入门(32) - 数据绑定: TBindingsList: TBindList、TBindPosition [未完成...]

    Delphi XE2 之 FireMonkey 入门(32) - 数据绑定: TBindingsList: TBindList.TBindPosition [未完成...] //待补...

  2. Delphi XE2 之 FireMonkey 入门(31) - 数据绑定: 绑定数据库

    Delphi XE2 之 FireMonkey 入门(31) - 数据绑定: 绑定数据库 一.全设计时操作: 先在窗体上放置控件: DataSource1    : TDataSource; Clie ...

  3. Delphi XE2 之 FireMonkey 入门(30) - 数据绑定: TBindingsList: TBindExpression 的 OnAssigningValue 事件

    Delphi XE2 之 FireMonkey 入门(30) - 数据绑定: TBindingsList: TBindExpression 的 OnAssigningValue 事件 表达式中的函数有 ...

  4. Delphi XE2 之 FireMonkey 入门(29) - 数据绑定: TBindingsList: 表达式的 Evaluate() 方法

    Delphi XE2 之 FireMonkey 入门(29) - 数据绑定: TBindingsList: 表达式的 Evaluate() 方法 TBindingsList 中可能不止一个表达式, 通 ...

  5. Delphi XE2 之 FireMonkey 入门(28) - 数据绑定: TBindingsList: 表达式函数测试: SelectedText()、CheckedState()

    Delphi XE2 之 FireMonkey 入门(28) - 数据绑定: TBindingsList: 表达式函数测试: SelectedText().CheckedState() 示例构想: 用 ...

  6. Delphi XE2 之 FireMonkey 入门(27) - 数据绑定: TBindingsList: TBindScope

    Delphi XE2 之 FireMonkey 入门(27) - 数据绑定: TBindingsList: TBindScope 如果在编写表达式时, 如果能够随意指认需要的控件就好了(通过 Owne ...

  7. Delphi XE2 之 FireMonkey 入门(26) - 数据绑定: TBindingsList: TBindExprItems

    Delphi XE2 之 FireMonkey 入门(26) - 数据绑定: TBindingsList: TBindExprItems 如果要给一对 "源控件" 和 " ...

  8. Delphi XE2 之 FireMonkey 入门(25) - 数据绑定: TBindingsList: 表达式的灵活性及表达式函数

    Delphi XE2 之 FireMonkey 入门(25) - 数据绑定: TBindingsList: 表达式的灵活性及表达式函数 绑定表达式中可以有简单的运算和字符串连接, 但字符串需放在双引号 ...

  9. Delphi XE2 之 FireMonkey 入门(24) - 数据绑定: TBindingsList: TBindExpression.Direction

    在学习 BindingSource 属性时, 可以让两个控件互为绑定源; TBindExpression 对应的功能是 Direction 属性. 先在窗体上添加 Edit1.Edit2.Bindin ...

随机推荐

  1. 数据分析画图,使用原生sql查询数据

    1.使用工具 https://www.hcharts.cn/ http://echarts.baidu.com/ 2.子表查询 id 创建时间 内容 处理者 1 2017-02-01 11:11 1 ...

  2. Linux文档整理之【Nginx安装Docker】

    这次整理的文档是Docker安装 先说明下我用的系统是Linux Centos,不同的Linux版本差别不大. 1.安装依赖包 sudo yum install -y yum-utils device ...

  3. Linux 解决E: Sub-process /usr/bin/dpkg returned an error code (1)错误

    在用apt-get安装软件时出现了类似于 install-info: No dir file specified; try --help for more information.dpkg: 处理 g ...

  4. Quartus 中调用modelsim的流程及*.vt或*.vht自动生成

    一.自动生成验证程序testbench的方法,setting-EDA Tool->simylation->选择对应的语言(verilog对应*.vt,VHDL对应*.vht)process ...

  5. GUI学习之十二——QTextEdit学习总结

    在学习了QFrame和QAbstractScrollArea两个父类后,接下来是一个重头戏:QTextEdit. 一.QTextEdit特性 QTextEdit是一个高级的WYSIWYG(What Y ...

  6. 工作中常用到的linux命令总结

    linux系统ubantu debian系统下载文件:wget https://github.com/buger/goreplay/releases/download/v1.0.0/gor_1.0.0 ...

  7. Vue this.$nextTick原理

    虽然 Vue.js 通常鼓励开发人员沿着“数据驱动”的方式思考,避免直接接触 DOM,但是有时我们确实要这么做.比如一个新闻滚动的列表项.如果在这里需要操作dom, 应该是等待 Vue 完成更新 DO ...

  8. npm 在安装的时候提示 没有权限操作的解决办法 Error: EACCES: permission denied

    十分感谢https://blog.csdn.net/ldqsxsl/article/details/75059607的帮助! 错误原因:权限错误,需要root用户. 解决办法:就是把用户目录下的 .n ...

  9. Bean的生命周期与JVM**

    案例: 在service里定义了一个全局变量,这类变量只能是final的.如果不是,在代码中一旦有地方给该变量进行业务赋值.当不满足赋值条件时变量仍然保留上次的赋值的值. 这是因为Bean没有销毁. ...

  10. ESP8266-让灯闪烁

    例子一:让板子上的LED_BUILTIN灯进行闪烁 void setup() { pinMode(LED_BUILTIN,OUTPUT); } void loop() { digitalWrite(L ...