В общем, есть такие предложения:
1) CreateInstance для мультика сделать ф-ей:
[code:1]function THIMultiElementEx.CreateInstance:THIEditMultiEx;
begin
Result := FOnCreate(FControl);
Result.Parent := Self;
Result.MainClass.Init;
end;[/code:1]
Это от того, что у нас в мультике сегодня есть такие коды:
[code:1] ............
F := FOnCreate(FControl);
F.Parent := Self;
............[/code:1]
и не очень хочется, чтобы они раздувались от нововведений...
Т.е., что бы стало не больше, а меньше:
[code:1] F := CreateInstance;[/code:1]
2) вместо [b]property [/b]OnCreate сделать два раздельных, для статического и динамического случаев, оставив кодогенератору возможность выбрать нужный. Например:
[code:1] property SaticCreate:TOnCreate write SetStaticProc;
property DynamicCreate:TOnCreate write FOnCreate;
......................
procedure THIMultiElementEx.SetStaticProc;
begin
FOnCreate := Value;
FChild := FOnCreate(FControl);
FChild.Parent := Self;
end;[/code:1]
3) ну а дальше все ясно: кодогенератор, разобравшись со св-м Mode, в статическом случае генерирует строку:
[code:1] StaicCreate := Create_UnitName;[/code:1]и ДОБАВЛЯЕТ в метод Init генерируемого контейнера вызов Init-метода обрабатывамого (если тот не пустой, конечно).
А в динамическом случае - ТОЛЬКО генерирует строку:
[code:1] DynamicCreate := Create_UnitName;[/code:1]и все.
Вроде....
Ответов: 9906
Рейтинг: 351
|
|||
карма: 9 |
|