Поговорим о реализации в надежде что найдутся инициативные разработчики.
Итак от KOL(вской) апликации удалось избавится.
Для этого было создан модуль _KOL_.pas который применяется во всех визуальных компонентах.
вот его частичная реализация (для примера)
unit _Kol_; interface uses Kol,Windows; var Applet: PControl; type TBrushStyle = Kol.TBrushStyle; PImageList = Kol.PImageList; PDirList = Kol.PDirList; PBitmap = Kol.PBitmap; ... другие типы function NewApplet(const Caption: String): PControl; overload; function NewForm( AParent: PControl; const Caption: String ): PControl; overload; ... другие функции в самом коде так(для примера) implementation function NewStrListEx(): PstrListEx; begin Result := Kol.NewStrListEx; end; function NewListEx(): PListEx; begin Result := Kol.NewListEx; end; function NewImageList( AOwner: PControl ): PImageList; begin Result := Kol.NewImageList(AOwner); end; function NewForm( AParent: PControl; const Caption: String ): PControl; begin Result := Kol.NewForm(AParent,Caption); end; function NewApplet(const Caption: String): PControl; begin Result := Kol.NewApplet(Caption); end;
Вот такой мостик, "нипель" называется. В итоге инициализируется левая глобальная (Applet) апликация для создания главной формы.
По идее можно от PControl отказаться вообще, создав объект с прототипами свойств о PControl. Надо пробовать конечно.
Но именно PControl в качестве указателя кодогенератор передаёт в конструкторы всех визульных контролов.
Именно его и используем, сам Parent родительского контейнера VCL передаётся в свойстве Tag, именно за счёт этого указателя и создаются Win контролы VCL
Сами свойства и методы для IDE HiAsm созданы по аналогии с Win.pas в WinVCL.pas
Вот так всё просто оказалось как ни странно
p.s продолжение следует