HiAsm - Конструктор программ

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » HiAsm - Конструктор программ » HiAsm VCL » Реализация


Реализация

Сообщений 1 страница 5 из 5

1

Поговорим о реализации в надежде что найдутся инициативные разработчики.
Итак от 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
Вот так всё просто оказалось как ни странно :rolleyes: 

p.s продолжение следует

0

2

переписал таймер и Debug на VCL
полёт нормальный :)
https://forumupload.ru/uploads/001b/10/a7/2/168354.png

0

3

Отрадно что в Turbo версии есть таки Margings, правда он отличается от KOL версии. В KOL версии выравнивание элементов производится в контейнере а в Delphi индивидуальное, т.е к каждому элементу контейнера, что несомненно гибче.
Так как множество контролов требуют пиктограммы (иконки) то решил сделать ImageList в качестве менеджера для этих целей, именно так он и используется в среде Delphi. Но постараюсь сделать более универсальным, т.е он будет содержать свойства массивов типа Icons,Bitmaps,Streams для загрузки необходимых форматов.
Контролы такие как TabControl, CoolBar выступающие в качестве универсальных контейнеров тоже стали менеджерами, к чёрту хабы, в Delphi их нет и от этого никто не умер :)

0

4

Начинаю всё переписывать заново пока не поздно. Во всяком случае главная форма теперь не знает ни про KOL ни про что такое Applet :) т.е запуск на чистой VCL. Делать было в WinVCL.pas THIWinVCL наследником от TDebug было большой ошибкой (по рекомендациям Dilma, ге он настоятельно рекомендовал именно так, но ведь  утверждалось для  KOL) Ну что делать, лень конечно, но это надо устранять. А переписывать уже довольно много...

0

5

Глаза боятся руки делают. Всё же пришлось править кодогенератор, так как он в проектный файл dpr прописывал KOL в объявляемых модулях.
Заодно убрал хитрожопый ключ запуска. Можно потом его ещё пошаманить чтобы более адекватные коды генерил. WinVCL.pas поправил, с компонентами попроще будет.

p.s если честно то уе...ся напрочь :) но утешает что теперь всякие шаманские движения больше не потребуются  :cool:

0


Вы здесь » HiAsm - Конструктор программ » HiAsm VCL » Реализация


Рейтинг форумов | Создать форум бесплатно