我创建了一些自定义枚举器集。
例子:
Type TStatus=(Unknown=0, Dead=1, Owned=2, Borrowed=3);
现在我想用我的集合中定义的所有项目填充一个组合框。所以我的第一个想法是使用 TypeInfo、GetEnumName 和 GetEnumValue-Functions。
i:=0;
while GetEnumValue(TypeInfo(TStatus),GetEnumName(TypeInfo(TStatus),i))<>-1 do
begin
status:=GetEnumName(TypeInfo(TStatus),i);
ComboBox.Items.Add(status);
inc(i);
end;
(我尝试使用单独的适配器将 TStringList 绑定到 ComboBox,但这没有用)。
填充我的 ComboBox 后,我继续使用 LiveBindings 将属性“SelectedValue”绑定到我的对象的 TStatus 属性,该属性简称为状态。
property Status:String read GetStatus write SetStatus;
虽然存在三个问题。
即使我为状态属性分配了默认值,当我滚动浏览对象时,组合框也不显示任何值。
组合框中的项目数量为:
Amount of Items in Set + Amount of Objects
因此,如果我有 2 个对象,我的 Combobox 中有 6 个项目,而它应该保持在 4
如果我从组合框中选择一个值并希望将其发布到我的对象,它不会访问我的 Setter-Function。
这整个 Live Bindings 的东西对我来说仍然是新的,但我想正确地学习它。
因此,如果您能帮助我解决这些问题,将不胜感激。
感谢您的时间。
编辑:我的 Delphi 版本是 10.1 Berlin,我使用 VCL,目标平台仅限 Windows。
Edit2: https ://www.dropbox.com/s/u7znetur723q6i2/DBApp.7z?dl=0 这是我的项目文件。