3

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

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

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

现在我希望能够滚动字符串网格,并且每次滚动时,我都想从 TDog 类型更新变量“CurrentDog”,无论字符串网格中突出显示的是什么对象。

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

在这一点上,我没有想法。

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

我感谢您的帮助和时间。

4

1 回答 1

1

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

您可以为您的狗(姓名、年龄...)创建所需的所有组件(TEdit),并将这些组件绑定到您的 TDataGeneratorAdapter(链接到“适配器”)中的相同字段(姓名、年龄...) TAdapterBindSource 的属性)。

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

编辑:内部适配器

经过几次搜索,您可以使用 TAdapterBindSource 的 InternalAdapter 获取对象

在 OnClick 事件中:

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

  CurrentDog:= TDog(Adapter.Current);
end;
于 2016-11-28T18:02:15.747 回答