码迷,mamicode.com
首页 > Windows程序 > 详细

DelphiXe5中的双向绑定

时间:2015-12-10 23:46:59      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:

在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.

http://blog.csdn.net/diligentcatrich/article/details/24552151

DelphiXe5中的双向绑定

标签:

原文地址:http://www.cnblogs.com/findumars/p/5037441.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!