如何在Delphis LiveBindings中提取BindSource的对象?

时间:2016-11-28 13:03:19

标签: delphi livebindings

在Delphi 10.1中,我有一个名为DogCollection的ObjectList 每个条目都是TDog类型,一个自定义类。

感谢来自malcolm groves的教程,我能够填充Stringgrid 与我的DogCollection。

http://www.malcolmgroves.com/blog/?p=1084

现在我希望能够滚动浏览stringgrid,每次滚动时我都要更新变量" CurrentDog"来自类型TDog,在stringgrid中突出显示任何Object。

所以我有一个关于我的DogObjects的概述以及我的Dog的单个Object 我可以独立查看/操纵。

我现在没有想法。

如果它对您有任何帮助,我也无法触发适配器的AfterScroll事件,即使我使用RightClick->添加导航器添加导航器也不会。

我感谢你的帮助和时间。

1 个答案:

答案 0 :(得分:1)

不确定是否理解这个问题,但我认为您不需要使用变量“CurrentDog”来处理列表中的选定对象。

您可以创建狗所需的所有组件(TEdit)(Name,Age ...),并将这些组件绑定到TDataGeneratorAdapter中的相同字段(Name,Age ...)(链接到TAdapterBindSource的“Adapter”属性。

然后,当您在网格中选择一行时,相应的对象将出现在您的编辑组件中。修改“文本”属性时,网格会更新。

编辑:InternalAdapter

经过少量搜索后,您可以使用TAdapterBindSource的InternalAdapter获取对象

OnClick事件:

procedure TForm1.Button1Click(Sender: TObject);
var
  Adapter: TBindSourceAdapter;
begin
  Adapter:= AdapterBindSource1.InternalAdapter;

  CurrentDog:= TDog(Adapter.Current);
end;