我使用memtables使用LiveBinding将枚举类型与组合框关联。如何从令人沮丧的情况填充memtables?
但是我有很多他们与他们的方式我做的是太糟糕(复制/粘贴)
例如,我有以下枚举:
TEnumResourceType = (trtApp, trtTab, trtSection, trtField, trtCommand, trtOther);
和我创建一个函数来给字符串相当于:
function EnumResourceTypeToStr(AEnum: TNaharEnumResourceType): string;
begin
case AEnum of
trtApp : result := 'Aplicação';
trtTab : result := 'Pagina (Tab)';
trtSection : result := 'Secção';
trtField : result := 'Campo';
trtCommand : result := 'Comando';
trtOther : result := 'Outro';
end;
end;
在一个数据模块,我把我的memTable,我需要用下面的鳕鱼来填充它,我用的是表的AFTEROPEN事件e:
procedure TDMGlobalSystem.vtResourceTypeAfterOpen(DataSet: TDataSet);
var
enum : TEnumResourceType;
begin
inherited;
for enum := Low(TEnumResourceType) to High(TEnumResourceType) do
DataSet.InsertRecord([EnumResourceTypeToStr(enum), Ord(enum)]);
end;
所有的工作,但我需要为每个新的脓肿做,我有几十个。最终,我将需要将我当前的memtable更改为其他,这是自动执行此过程的另一个关注点。当前的memtable有时不适用于Android。我正在寻找一种方法来自动化这个过程,或使用泛型,或任何,在DataModule我只需要像这样的东西:PopulateEnum(Table,Enum);
最好的解决办法是建立从这个memTable中继承的组成部分,在某种程度上定义什么是需要枚举所有的魔法发生(包括enumtostr的选择)
你只想用整数和字符串填充表格吗?为什么不使用'TDictionary'来填充表并遍历该键并获取该键的字符串? –
如果你想迭代(几乎)任何枚举看这个http:// stackoverflow。com/questions/12379032/using-an-enum-with-generics –