表达式中的函数有限, 譬如我想通过绑定输出文本的长度(譬如在 Label1 中绑定输出 Edit1.Text 的长度)就没有相应的函数;

这可在 TBindExpression 的 OnAssigningValue 事件中处理.

TBindExpression 和它的兄弟们 (TBindExprItems、TBindLink、TBindListLink、TBindGridLink、TBindPosition、TBindList、TBindGridList、TBindDBEditLink、TBindDBTextLink、TBindDBListLink、TBindDBImageLink、TBindDBMemoLink、TBindDBCheckLink、TBindDBGridLink) 拥有相同的事件.



先在窗体上添加 Label1、Edit1、BindingsList1, 然后激活 Edit1 的 OnKeyUp 事件和窗体的默认事件;
代码中手动完成了 OnAssingningValue 事件, 在设计时添加事件会更方便.

unit Unit1;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types,
  FMX.Controls, FMX.Forms, FMX.Dialogs, Data.Bind.EngExt, Fmx.Bind.DBEngExt, System.Rtti,
  System.Bindings.Outputs, FMX.Layouts, Data.Bind.Components, FMX.Edit; type
  TForm1 = class(TForm)
    Label1: TLabel;
    Edit1: TEdit;
    BindingsList1: TBindingsList;
    procedure FormCreate(Sender: TObject);
    procedure Edit1KeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
    procedure MyOnAssigningValue(Sender: TObject; AssignValueRec: TBindingAssignValueRec; var Value: TValue; var Handled: Boolean);
  end; var
  Form1: TForm1; implementation {$R *.fmx} procedure TForm1.FormCreate(Sender: TObject);
begin
  with TBindExpression.Create(BindingsList1) do
  begin
    ControlComponent := Label1;
    ControlExpression := 'Text';
    SourceComponent := Edit1;
    SourceExpression := 'Text';
    OnAssigningValue := MyOnAssigningValue; //
    Active := True;
  end;
end; procedure TForm1.Edit1KeyUp(Sender: TObject; var Key: Word; var KeyChar: Char; Shift: TShiftState);
begin
  BindingsList1.Notify(Sender, '');
end; procedure TForm1.MyOnAssigningValue(Sender: TObject; AssignValueRec: TBindingAssignValueRec; var Value: TValue; var Handled: Boolean);
begin
  Value := Length(Value.ToString); //
end; end.

最新文章

  1. 【codevs2495】 水叮当的舞步
  2. android图片处理方法
  3. 从分布式一致性谈到CAP理论、BASE理论
  4. XE4 IOS开发环境配置
  5. Ununtu 12.04 gedit安装插件Source Code Browser
  6. mysql 自定义排序顺序
  7. jquery图片轮播插件slideBox
  8. 两个示例介绍JavaScript的闭包
  9. 开始3D编程前需注意的十件事
  10. 二、Cocos2dx中Android部分的c++和java实现相互调用(高级篇)
  11. Linux IO barrier
  12. iOS app 的 ASLR
  13. MySQL 笔记整理(18) --为什么这些SQL语句逻辑相同,性能却差异巨大?
  14. 阿森纳vs托特纳姆热刺
  15. CodeSmith Generator 7.0.2的激活流程
  16. snmp v3的安全配置 snmp认证与加密配置(53)
  17. linux下zip文件解压乱码的问题
  18. 数论+矩阵快速幂|斐波那契|2014年蓝桥杯A组9-fishers
  19. AVR单片机最小系统 基本硬件线路与分析
  20. Java NIO.2 —— 文件或目录删除操作

热门文章

  1. 在Myeclipse下查看Java字节码指令信息
  2. 2019-8-31-MobaXterm-使用代理
  3. HTML5初识
  4. airflow 简介
  5. Saving James Bond - Easy Version
  6. day02项目配置代码
  7. 【NOIP2013模拟】导弹防御塔
  8. 部署至Oracle数据库的注意事项
  9. 大数阶乘(N! Plus)问题
  10. matplotlib中中文字体配置