我正在使用带有SP1的Delphi XE3。我创建了一个FireMonkey桌面应用程序,并在主窗体上放置了一个TSpinBox和一个TTrackBar。现在,我已使用Visual Livebindings连接了TSpinBox和TTrackBar的“ Value”属性。 IDE已自动创建一个“ TLinkControlToProperty”来连接它们。当我在TTrackBar上移动滑块时,TSpinBox中的值会更改。但是,当我更改TSpinBox中的值时,TTrackBar的值不会得到更新。

如何使用LiveBindings将其更改为双向连接?我的目的是在TSpinBox的“值”更改时更改TTrackBar的“值”属性。此外,我对不使用“ TSpinBox”的“ OnChange”事件的解决方案感兴趣。是否可以不派生“ TSpinBox”的后代?

最佳答案

您将必须通过绑定列表添加绑定,定义源和目标,将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;

09-04 16:53