如果要給一對 "原始檔控制" 和 "目標控制項" 寫多個運算式, 使用 TBindExpression 就不如 TBindExprItems 了.
TBindExprItems 中的運算式又分兩組: FormatExpressions、ClearExpressions, 後者是在斷開綁定時的運算式.
樣本設想:
1、TrackBar1 為源, 把其 Value 值綁定給 Edit1.Text 和 Edit1.Width 和 Label1.Text;
2、斷開綁定時, 在 Edit1 中顯示 "已斷開綁定".
先在表單上添加: TrackBar1、Edit1、Label1、BindingsList1、CheckBox1, 然後啟用 TrackBar1、ChengkBox1 和表單的預設事件:
unit Unit1;interfaceuses System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, FMX.Types, FMX.Controls, FMX.Forms, FMX.Dialogs, Data.Bind.EngExt, Fmx.Bind.DBEngExt, Data.Bind.Components, FMX.Edit;type TForm1 = class(TForm) TrackBar1: TTrackBar; Edit1: TEdit; Label1: TLabel; BindingsList1: TBindingsList; CheckBox1: TCheckBox; procedure FormCreate(Sender: TObject); procedure TrackBar1Change(Sender: TObject); procedure CheckBox1Change(Sender: TObject); end;var Form1: TForm1;implementation{$R *.fmx}var bindExprItems: TBindExprItems;procedure TForm1.FormCreate(Sender: TObject);begin bindExprItems := TBindExprItems.Create(BindingsList1); with bindExprItems do begin ControlComponent := Edit1; //目標控制項 SourceComponent := TrackBar1; //原始檔控制 {把 TrackBar1.Value 綁定到 Edit1.Text} with FormatExpressions.AddExpression do begin ControlExpression := 'Text'; SourceExpression := 'Value'; end; {把 TrackBar1.Value 綁定到 Edit1.Width} with FormatExpressions.AddExpression do begin ControlExpression := 'Width'; SourceExpression := 'Value'; end; {把 TrackBar1.Value 綁定到 Label1.Text} with FormatExpressions.AddExpression do begin ControlExpression := 'Owner.Label1.Text'; //Owner SourceExpression := 'Value'; end; {當要斷開綁定時...} with ClearExpressions.AddExpression do begin ControlExpression := 'Self.Text'; //這裡的 Self 是指目標控制項本身, 可省略 SourceExpression := '"已斷開綁定"'; end; Active := True; end; CheckBox1.IsChecked := True; TrackBar1.Max := ClientWidth;end;procedure TForm1.TrackBar1Change(Sender: TObject);begin BindingsList1.Notify(Sender, 'Value');end;procedure TForm1.CheckBox1Change(Sender: TObject);begin bindExprItems.Active := TCheckBox(Sender).IsChecked;end;end.