在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->添加导航器添加导航器也不会。
我感谢你的帮助和时间。
答案 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;