标签:
在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
标签:
原文地址:http://www.cnblogs.com/findumars/p/5037441.html