Aziz писал(а):
Как же тогда он "склеивает" их коды в один исходник?А он их не копирует: он генерирует модули контейнеров в которых прописывает по нужным правилам ссылки на компоненты:

#pas
.....................................
uses
Windows,
hi<КОНТЕЙНЕР>,
hi<КОМПОНЕНТ1>,
hi<КОМПОНЕНТ2>,
hi<КОМПОНЕНТn>,
kol,Share;
.....................................
type
TClass<КОНТЕЙНЕР>_<ІD> = class
public
<КОНТЕЙНЕР>_<ІD>:THI<КОНТЕЙНЕР>;
<КОМПОНЕНТ1>_<ІD>:THI<КОМПОНЕНТ1>;
<КОМПОНЕНТ2>_<ІD>:THI<КОМПОНЕНТ2>;
<КОМПОНЕНТn>_<ІD>:THI<КОМПОНЕНТn>;
constructor Create;
destructor Destroy; override;
end;
...................................
constructor TClass<КОНТЕЙНЕР>_<ІD>.Create;
begin
<КОНТЕЙНЕР>_<ІD> := THI<КОНТЕЙНЕР>.Create(nil);
with <КОНТЕЙНЕР>_<ІD> do begin
// Заполнение свойств и прочее
end;
<КОМПОНЕНТ1>_<ІD> := THI<КОМПОНЕНТ1>.Create(<КОНТЕЙНЕР>_<ІD>.Control);
with <КОМПОНЕНТ1>_<ІD> do begin
// Заполнение свойств и прочее
end;
<КОМПОНЕНТ2>_<ІD> := THI<КОМПОНЕНТ2>.Create(<КОНТЕЙНЕР>_<ІD>.Control);
with <КОМПОНЕНТ2>_<ІD> do begin
// Заполнение свойств и прочее
end;
<КОМПОНЕНТn>_<ІD> := THI<КОМПОНЕНТn>.Create(<КОНТЕЙНЕР>_<ІD>.Control);
with <КОМПОНЕНТn>_<ІD> do begin
// Заполнение свойств и прочее
end;
................
end;
destructor TClass<КОНТЕЙНЕР>_<ІD>.Destroy;
begin
<КОМПОНЕНТn>_<ІD>.Destroy;
<КОМПОНЕНТ2>_<ІD>.Destroy;
<КОМПОНЕНТ1>_<ІD>.Destroy;
<КОНТЕЙНЕР>_<ІD>.Destroy;
inherited;
end;
------------ Дoбавленo в 14.22:
Aziz писал(а):
можно добавить поле ID и вручную вбиватьЕсли в каждый класс компонента добавить поле ID: integer, то можно модифицировать кодогенератор, чтобы в выше выложенном исходнике в секции назначения свойств он прописывал и идентификатор.