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

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

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



VCLContainer

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

1

Вроде как tom-it интересовался телепортацией элементов VCL Delphi в HiAsm без ActiveX или dll, просто как доказательство мои давние эксперименты по этому поводу
К примеру пару попыток перевести эту игру в шахматы на KOL были неудачны, довольно сложно оказалось. Но а с этим контейнером всё легко и просто. Так то штука замечательная, имеет свой интеллект ну а в другом режиме может играть с соперником что запросто делает возможность играть по сети. Ну размер файла соответственно как у VCL ну не столь критичен в наше то время.

Демка и утилита которые эти контейнера клепает->

https://forumupload.ru/uploads/001b/10/a7/2/78620.png

0

2

В продолжений к теме кому интересно.
Эксперименты по портированию контролов VCL закончились. Работает более менее.
В результате экспериментов выяснилось что для создания VCL вовсе не обязательно создавать пакет и переписывать все компоненты, достаточно создать проект в пакете Windows, Добавить нужный компилятор(ы), создать модуль аналог win.pas для VCL Написать аналоги стандартных контролов (ini файлы можно не переделывать а только добавлять свойства для совместимости) ну это как минимум. Самое главное не придётся переписывать кодогенератор как многим это казалось ранее и многих кстати это и останавливало, впрочем как само сомнение от Dilma что якобы сомнительно что две совершенно разные Application будут работать без конфликтов. Ну что же, будет интересно так ли это, попробуем отсеять эти сомнения. Будет интересно что у меня из этого получится или не получится. Во всяком случае делать уже начал, при успешной реализации это будет просто другой уровень для приложений созданных в HiAsm. Так как писать компоненты из множества библиотек и бесплатных модулей будет просто в разы проще.

Следите за новостями, будет интересно...

0

3

Тестовый вариант. Applet от Kol на самом деле нужен только для Debug и диалогов
А так все конструкторы и деструкторы работают нормально, Сам Applet не получает сообщений и поэтому не мешает никак!
Kомпоненты создаются практически по шаблону. что вероятней всего позволит сделать утилиту которая автоматически будет делать компонент для HiAsm из исходника Delphi (в любом случае львиную долю кода и ini файла)

Добавлены общие свойства
CtrlName=Имя элемента (если отсутствует то назначается автоматически)|2|
ParentName=Имя родительского контейнера CtrlName при инициализации приложения|2|
AlignTo=Выравнивание элемента в родительском контейнере(в Design-time не работает)|14|0|caNone,caLeft,caTop,caRight,caBottom,caClient

AlignTo просто дублирует свойство Align при запуске приложения (тем самым не мешает размещению элементов в редакторе форм для размещения в контейнерах из вне, как в примере)
В коде инициализации это просто _prop_Align := _prop_AlignTo;

Управление ToolBar(ом) штатное, двойной клик вызов окна настроек
Shift+ЛКМ перетаскивание кнопок

Демка(пожата штатным UPX)->Ссылка

https://forumupload.ru/uploads/001b/10/a7/2/t261931.png

0

4

Не имею возможности проверить на Win11, на Win10x64 работает

0

5

Собрал утилиту для генерации HiAsm компонента из исходников VCL на основе RTTI (Kol не имеет поддержки RTTI)
С небольшими правками (в примере на выходе 1200 строк) исходник компилируется. для не визуальных контролов тоже подходит(возможно отдельную утилиту сделаю)
Цель достигнута, надеюсь что дела пойдут побыстрей.

https://forumupload.ru/uploads/001b/10/a7/2/t188161.png
https://forumupload.ru/uploads/001b/10/a7/2/t154097.png

0

6

По быстрей не получается :)
Возникли трудности с наследованием у VCL некоторых контролов.
К примеру от TCustomControl, свойства Align и Font мешают сборке на уровне кодогенератора. Отключив свойства в ini компонент работает нормально с дефолтными свойствами.
Не хочется ради этого менять имена...
х.з что делать %-)

...
Эх, делать нечего
К таким контролам придётся применять скрытие проблемных свойств и переназначать новыми именами
Вот пример редактора от Synopse c открытым исходным кодом
Легко работает с большими файлами
Ссылка

После генерации исходника просто закоментил пару свойств (хотя можно было просто указать для них юниты)

0



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