Вверх ↑
Ответов: 9906
Рейтинг: 351
#1: 2005-06-22 00:31:04 ЛС | профиль | цитата
В общем, есть такие предложения:

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]и все.
Вроде....
карма: 9

0