DelphiXe5中的双向绑定

在Delphi下等这一功能很久了,虽然C#下早已实现了这一功能。但是在Dephi下尝试这项功能时还是有些许的激动。闲言少絮,直接上代码。

unit BindingDemo;


interface


uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.Bind.EngExt, Vcl.Bind.DBEngExt,
  Vcl.StdCtrls, Data.Bind.Components, Vcl.Grids;


type
  TPerson = class(TObject)
  protected
    fName: string;
    fAge: integer;
  procedure
    SetName(const Value: string);
  public
    property Name: string read fName write SetName;
    property Age: integer read fAge write fAge;
  end;


type
  /// <summary>
  /// 一个object与ui控件绑定的简单例子
  /// </summary>
  TForm2 = class(TForm)
    bndscp1: TBindScope;
    bndngslst1: TBindingsList;




    Button1: TButton;
    Button2: TButton;
    edt1: TEdit;
    procedure btnLoadClick(Sender: TObject);
    procedure btnSaveClick(Sender: TObject);
  private
    fInitialized: boolean;
    fPerson: TPerson;
    procedure Initialize;
    { Private declarations }
  public
    { Public declarations }
    procedure AfterConstruction; override;
    procedure BeforeDestruction; override;
  end;


var
  Form2: TForm2;


implementation


{$R *.dfm}


procedure TForm2.AfterConstruction;
begin
  inherited;
  Initialize;
end;


procedure TForm2.BeforeDestruction;
begin
  fPerson.Free;
  inherited;
end;


procedure TForm2.btnLoadClick(Sender: TObject);
begin
  fPerson.Name := 'Doogie Howser';
  fPerson.Age := 15;
  bndscp1.DataObject := fPerson;
end;


procedure TForm2.btnSaveClick(Sender: TObject);
begin
  bndngslst1.Notify(edt1, '');
end;


procedure TForm2.Initialize;
var
  expression: TBindExpression;
begin
  //Create a binding expression.
  expression := TBindExpression.Create(self);
  expression.ControlComponent := edt1;
  expression.ControlExpression := 'Text';
  //The Text property of Edit1 ...
  expression.SourceComponent := bndscp1;
  expression.SourceExpression := 'Name';
  //... is bound to the Name property of fPerson
  expression.Direction := TExpressionDirection.dirBidirectional;
  //Add the expression to the bindings list.
  expression.BindingsList := bndngslst1;
  //Create a Person object.
  fPerson := TPerson.Create;
end;


{ TPerson }


procedure TPerson.SetName(const Value: string);
begin
  fName := Value;
  //ShowMessage('Name changed to "'+ Value +'"');
end;


end.

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi是一种高级编程语言,它广泛应用于以视觉化为特点的软件开发。Delphi XE5是Delphi的一个版本,它是Embarcadero Technologies公司于2013年推出的。Delphi XE5带来了一些新的功能和增强措施,以提升开发者的生产力和应用程序的性能。 Delphi XE5引入了一个名为FireMonkey的新的应用程序框架,它允许开发者在多个平台上构建跨平台的应用程序。开发者可以使用同样的代码库来开发运行在Windows、Mac、iOS和Android等多个平台上的应用程序。这样一来,开发者可以更方便地将应用程序扩展到不同的平台,从而扩大了应用程序的受众范围。 此外,Delphi XE5还加入了对移动设备的支持。开发者可以通过使用FireMonkey框架来创建运行在iOS和Android设备上的应用程序。这意味着开发者可以通过Delphi XE5来满足不同平台的用户需求,提供更全面的应用程序体验。 Delphi XE5还改进了开发者的工作流程。它提供了一套直观、易用的工具和控件,可以帮助开发者快速创建应用程序的用户界面。此外,Delphi XE5还提供了一套强大的调试工具,帮助开发者快速位和解决应用程序的错误。 总之,Delphi XE5是Delphi编程语言的一个版本,它带来了跨平台开发的能力和对移动设备的支持。通过Delphi XE5,开发者可以更快速、更灵活地开发应用程序,并且可以将应用程序扩展到多个平台上,提供更广泛的用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值