3

SP1 で Delphi XE3 を使用しています。FireMonkey デスクトップ アプリケーションを作成し、TSpinBox と TTrackBar をメイン フォームにドロップしました。Visual Livebindings を使用して、TSpinBox と TTrackBar の「Value」プロパティを接続しました。IDE は、それらを接続するための「TLinkControlToProperty」を自動的に作成しました。TTrackBar のスライダを動かすと、TSpinBox の値が変化します。しかし、TSpinBox の値を変更しても、TTrackBar の値は更新されません。

これを LiveBinding を使用して双方向接続に変更するにはどうすればよいですか? 私の目的は、TSpinBox の「値」が変更されたときに、TTrackBar の「値」プロパティを変更することです。さらに、「TSpinBox」の「OnChange」イベントを使用しないソリューションに興味があります。「TSpinBox」の子孫を派生させずにこれは可能ですか?

4

1 に答える 1

3

Bindinglist を介して Binding を追加し、Source と Destination を定義し、Direction を dirBiDirectional に設定し、次のコードをソースに追加する必要があります。

procedure TForm1.SpinBox1Change(Sender: TObject);
begin
 BindingsList1.Notify(Sender, '');
end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
 BindingsList1.Notify(Sender, '');
end;

これはに減らすことができます

procedure TForm1.OneChangeEventForAllControlsUsingBindinglist1(Sender: TObject);
begin
 BindingsList1.Notify(Sender, '');
end;

ここに画像の説明を入力

于 2013-01-24T11:37:33.660 に答える