Delphi XE2 之 FireMonkey 入门(30) - 数据绑定: TBindingsList: TBindExpression 的 OnAssigningValue 事件
2024-08-30 21:25:25
表达式中的函数有限, 譬如我想通过绑定输出文本的长度(譬如在 Label1 中绑定输出 Edit1.Text 的长度)就没有相应的函数;
先在窗体上添加 Label1、Edit1、BindingsList1, 然后激活 Edit1 的 OnKeyUp 事件和窗体的默认事件;
代码中手动完成了 OnAssingningValue 事件, 在设计时添加事件会更方便.
这可在 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.
最新文章
- 【codevs2495】 水叮当的舞步
- android图片处理方法
- 从分布式一致性谈到CAP理论、BASE理论
- XE4 IOS开发环境配置
- Ununtu 12.04 gedit安装插件Source Code Browser
- mysql 自定义排序顺序
- jquery图片轮播插件slideBox
- 两个示例介绍JavaScript的闭包
- 开始3D编程前需注意的十件事
- 二、Cocos2dx中Android部分的c++和java实现相互调用(高级篇)
- Linux IO barrier
- iOS app 的 ASLR
- MySQL 笔记整理(18) --为什么这些SQL语句逻辑相同,性能却差异巨大?
- 阿森纳vs托特纳姆热刺
- CodeSmith Generator 7.0.2的激活流程
- snmp v3的安全配置 snmp认证与加密配置(53)
- linux下zip文件解压乱码的问题
- 数论+矩阵快速幂|斐波那契|2014年蓝桥杯A组9-fishers
- AVR单片机最小系统 基本硬件线路与分析
- Java NIO.2 —— 文件或目录删除操作