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

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

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


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


Реализация

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

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

6

Всё было хорошо пока дело не дошло до контейнеров типа "Panel" .Ночь была убита что бы заставить кодогенератор  стряпать код для мульти контейнеров, до кучи и их пришлось править. Это полный пиз... А ещё динамические мультики не делал. хз что будет дальше ...

0

7

С праздником всех!
Итак, многое что пришлось переделать но результатом доволен (что редко бывает)
Всё таки правка кодо-генератора и контейнеров многое что изменило.
Хотел на этой неделе поделать примеры, но увы, кодинг затянулся.

0

8

Может что кто-то задавался вопросом ну а что же с компонентами KOL. Согласен, жаль терять багаж. Поэтому решил сделать Менеджер (один для всех) для таких компонентов, который бует выступать в качестве контейнера. предоставляя Parent для размещения в нём компонентов под KOL. Доработка будет минимальной. Достаточно будет в ini файле такого компонента объявить интерфейс. Например Interfaces=WinControls,KOLGUIControls

0

9

Как скучно писать стандартные компоненты, никакого API, напишет даже школьник. С трудом себя заставляю :)
В принципе после переделки кодогенератора расставив макроопределения и подрихтовать код возможно будет собираться и под FPC(без KOL) 
Под FPC просто куча компонентов в среде CodeTypon

0

10

Застрял на RichEdit, уже не скучно :)
На базовую версию забьём, ориентир на win10 (там 8 версия с редактированием таблиц и вставкой png)
Сам контрол будет с минимум функционала, но будет в качестве менеджера. Функционал будет расширятся за счёт отдельных компонентов форматирования RTF.

0

11

На удивление для Delphi IPEdit(a) толкового не нашлось :( . Те что на системном классе SysIPAddress32 глючные
В то время когда я писал под KOL даже не парился с поиском так как легче было самому написать чем с VCL портировать.
Остановился пока на варианте с наследником от MaskEdit, писать свой просто лень пока :)

0


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


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