12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- unit formfactory;
- interface
- uses classes;
- Type
- TFormClass = Class of TComponent;
- procedure RegisterForm(aClass: TFormClass);
- Function GetFormClassByName(const aName : String) : TFormClass;
- implementation
- uses sysutils, js;
- Type
- TFormDef = Record
- aClass : TFormClass;
- aName : string;
- end;
- TFormDefArray = Array of TFormDef;
-
- Var
- List : TFormDefArray;
- procedure RegisterForm(aClass: TFormClass);
- Var
- Def : TFormDef;
-
- begin
- Def.aClass:=aClass;
- Def.aName:=aClass.ClassName;
- TJSArray(List).Push(JSValue(Def));
- end;
- Function IndexOfFormClassByName(const aName : String) : Integer;
- begin
- Result:=Length(List)-1;
- While (Result>=0) and Not SameText(aName,List[Result].aName) do
- Dec(Result);
- end;
- Function GetFormClassByName(const aName : String) : TFormClass;
- Var
- Idx: Integer;
-
- begin
- Idx:=IndexOfFormClassByName(aName);
- if Idx=-1 then
- Result:=Nil
- else
- Result:=List[Idx].aClass;
- end;
- initialization
- SetLength(List,0);
- end.
|