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.
總結
以上是生活随笔為你收集整理的DelphiXe5中的双向绑定的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 常用Sqlserver中的查询语句
- 下一篇: 李开复离职后谷歌将在中国消亡