Delphi XE2의 FireMonkey 시작(22) - 데이터 바인딩: BindingSource, BindingName, Find Binding(), Binding[]

1703 단어 Delphi
창에 TrackBar1, Edit1, Label1을 추가하고 속성(디자인 가능)을 설정합니다.

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.BindingSource := TrackBar1;  //  TrackBar1       Edit1
  Label1.BindingSource := TrackBar1; //  TrackBar1       Label1
end;
{  , Edit1.Text   Label1.Text     TrackBar1.Value  }
서로 다른 유형 값의 소통은 FM 구성 요소의 새로운 데이터 속성에 의존해야 한다고 생각합니다.Variant 유형입니다.

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(TrackBar1.Data); //TrackBar1.Data <- TrackBar1.Value
  ShowMessage(Label1.Data);    //Label1.Data <- Label1.Text
  ShowMessage(Edit1.Text);     //Edit1.Data <- Edit1.Text
end;
일부 컨트롤에는 BindingSource 속성 (예: TButton, Tpanel) 이 없습니다. 왜냐하면 필요하지 않기 때문입니다. (단, 전용 귀속 컨트롤을 사용할 때 가능합니다.)
두 컨트롤이 서로 데이터 원본이 되면 서로 데이터를 교환할 수 있다.

procedure TForm1.FormCreate(Sender: TObject);
begin
  Edit1.BindingSource := Edit2;
  Edit2.BindingSource := Edit1;
end;
BindingSource 속성이 있는 컨트롤에 BindingName을 지정하는 경우...:

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit1.BindingName := 'bn1'; //

  {           FindBinding()      }
  ShowMessage(Self.FindBinding('bn1').ClassName);
  ShowMessage(TEdit(FindBinding('bn1')).Text);

  {           Bingding[]          Data  }
  Self.Binding['bn1'] := 'NewText';
  ShowMessage(Self.Binding['bn1']); //NewText
end;
XE2의 귀속 기능(FM뿐만 아니라)은 내가 생각했던 것보다 훨씬 강력하다. 그리고 TBindings List, TBindings Scope, TBind Scope DB, TBind Navigator...

좋은 웹페이지 즐겨찾기