• Delphi XE2 之 FireMonkey 入门(26)



    如果要给一对 "源控件" 和 "目标控件" 写多个表达式, 使用 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;
    
    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, 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.
  • 相关阅读:
    Phpstorm+Xdebug配置
    ThinkPHP5.0---URL访问
    Thinkphp5创建控制器
    ThinkPHP5.0的安装
    网页动态背景——随鼠标变换的动态线条
    git SSH
    [go] 循环与函数
    svg make a face
    Hello Vizhub
    Beetlsql自定义生成entity,mapper,md代码
  • 原文地址:https://www.cnblogs.com/dzdd/p/3346892.html
Copyright © 2020-2023  润新知