我正在使用带有SP1的Delphi XE3。我创建了一个FireMonkey桌面应用程序,并在主窗体上删除了一个TSpinBox和一个TTrackBar。我现在使用Visual Livebindings连接了TSpinBox和TTrackBar的“Value”属性。 IDE已自动创建“TLinkControlToProperty”来连接它们。当我移动TTrackBar上的滑块时,TSpinBox中的值会发生变化。但是当我更改TSpinBox中的值时,TTrackBar的值不会更新。
如何使用LiveBindings将其更改为双向连接?我的目标是在TSpinBox的“Value”发生变化时更改TTrackBar的“Value”属性。此外,我感兴趣的是一个不使用“TSpinBox”的“OnChange”事件的解决方案。如果没有派生出“TSpinBox”的后代,这可能吗?
答案 0 :(得分: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;