The idea is simple - create a TDictionary with a class name for TComponent to use
for enum in vm.ClassNameToComponent do TLuaClassTemplate<enum.Value>.RegisterClass(vm.LS, PrintGlobal, container, vm);
listing instead
TLuaClassTemplate<TButton>.RegisterClass(vm.LS, PrintGlobal, container, vm); TLuaClassTemplate<TPanel>.RegisterClass(vm.LS, PrintGlobal, container, vm); TLuaClassTemplate<TEdit>.RegisterClass(vm.LS, PrintGlobal, container, vm); ...
and use the class name taken from xml to work with classes of a general type.
But there's a problem:
TClassNameToComponentDict = TDictionary<string, TComponent>; ... ClassNameToComponent: TClassNameToComponentDict; ... ClassNameToComponent := TClassNameToComponentDict.Create; ClassNameToComponent.Add('TButton', TButton); ClassNameToComponent.Add('TPanel', TPanel); ClassNameToComponent.Add('TEdit', TEdit); ...
error "Incompatible types" TComponent "and" TButton class "".
How to use a "class" such as TButton, etc. How is the general meaning?
source share