Кроссплатформенный tchart в Delphi и Lazarus
От: Khimik  
Дата: 15.12.22 07:48
Оценка:
Мне казалось, что лучшим решением будет использовать steema teechart, чуть поправив его для компиляции в Lazarus, как написано здесь:

https://habr.com/ru/post/534466/

Но поставить бесплатно исходники steema teechart не получилось, возможно авторы проапгрейдили защиту (активация онлайн). Может быть, стоит купить исходники steema teechart за 600 долларов? Если это возможно в России.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Отредактировано 19.12.2022 8:52 Khimik . Предыдущая версия .
Re: Кроссплатформенный tchart в Delphi и Lazarus
От: Khimik  
Дата: 15.12.22 07:56
Оценка:
Забыл добавить, может быть ещё вариант:
4) Написать универсальный хелпер к tchart, который в Delphi будет обращаться к одним процедурам, а в Lazarus к другим. По идее, чтобы это работало, нужны какие-то ifdef-ы; как в данном случае в рамках ifdef-а определить, текущий tchart это Delphi компонент или Lazarus-овский?
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re: Кроссплатформенный tchart в Delphi и Lazarus
От: Jack128  
Дата: 15.12.22 08:31
Оценка: 2 (1)
Здравствуйте, Khimik, Вы писали:

Тут человек описывает в том числе и борьбу с TChart в лазаре https://habr.com/ru/post/534466/
Re: Кроссплатформенный tchart в Delphi и Lazarus
От: rudzuk  
Дата: 15.12.22 08:49
Оценка:
Здравствуйте, Khimik, Вы писали:

K> 1) ...

K> 2) ...
K> 3) ...

4. Перестать рубить хвост собаке по частям, и принять, наконец, волевое решение.
avalon/3.0.1
Re: Кроссплатформенный tchart в Delphi и Lazarus
От: paradok  
Дата: 15.12.22 10:01
Оценка: :)
Здравствуйте, Khimik, Вы писали:

K>о компоненты tchart в этих средах очень разные.


Все очень просто — ВСЕГДА рисуете графики используя один из прекрасных бесплатных построителей графиков
на HTML-javascript
их много, они прекрасны, работают очень быстро, невероятно быстро, быстрее дельфиского компонента раз в 10
отображают миллионы точек з 1 сек
используют аппаратное ускjрение WebGL
если хотите за деньги — они тоже есть
Ну как подключить к дельфи и лазарю уверен вы знаете знаете
Отредактировано 15.12.2022 10:03 paradok . Предыдущая версия .
Re[2]: Кроссплатформенный tchart в Delphi и Lazarus
От: Khimik  
Дата: 15.12.22 13:25
Оценка:
Здравствуйте, paradok, Вы писали:

P>Ну как подключить к дельфи и лазарю уверен вы знаете знаете


Не знаю, прошу пояснить. Или это троллинг?
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[3]: Кроссплатформенный tchart в Delphi и Lazarus
От: paradok  
Дата: 15.12.22 14:03
Оценка: -1
Здравствуйте, Khimik, Вы писали:

K>Здравствуйте, paradok, Вы писали:


P>>Ну как подключить к дельфи и лазарю уверен вы знаете знаете


K>Не знаю, прошу пояснить. Или это троллинг?



https://codemonkeydeveloper.blogspot.com/2016/01/delphi-twebbrowser-javascript.html

Delphi TWebBrowser выполнение JavaScript
в посте описано как в компоненте TWebBrowser выполнить скрипт JavaScript.Для выполнения скрипта потребуются подключить модули MSHTML_TLB, SHDocVw. Модуль SHDocVw идет в комплексе Delphi, а вот модуль MSHTML_TLB нужно экспортировать с Microsoft HTML Object Library. Модуль MSHTML_TLB нужен для определения интерфейса IHTMLDocument2 и выполнения скриптов.
Для получения файла модуля выполним следующие действия:

В Delphi открываем Component -> Import ActiveX Control...
В появившемся окне выбираем Import ActiveX Control, нажимаем Next>>
В списке выбираем "Microsoft HTML Object Library", нажимаем Next>>
Указываем каталог куда положим модуль
Далее на своё усмотрение выбираем создать модуль, добавить его в проект или установить и нажимаем Finish.

Теперь у нас есть все необходимые модули и можно написать код для выполнения скрипта JavaScript.


К модулю где будет реализовываться функция подключаем в uses SHTML_TLB, SHDocVw.

И описываем процедуру.

procedure ExecuteScript(doc: IHTMLDocument2; script: string; language: string);
begin
if doc <> nil then
begin
if doc.parentWindow <> nil then
doc.parentWindow.ExecScript(script, Olevariant(language)) ;
end;
end;

Пример использования данной процедуры.

var
script : string;
begin
//Данный скрипт найдет первый элемент с ID равной = "main" и покажет его тэги;
script := 'var elemMain = document.getElementById("main"); '+
'if (elemMain != null) { alert(elemMain.tagName) ; }';
ExecuteScript(EmbeddedWB1.Document as IHTMLDocument2, script, 'javascript');
end;
Re: Кроссплатформенный tchart в Delphi и Lazarus
От: Tai Казахстан  
Дата: 15.12.22 15:22
Оценка:
Здравствуйте, Khimik, Вы писали:

K>Пытаюсь портировать свою программу с Delphi на Lazarus


С какой целью?
Re[2]: Кроссплатформенный tchart в Delphi и Lazarus
От: Khimik  
Дата: 15.12.22 16:04
Оценка:
Здравствуйте, Tai, Вы писали:

K>>Пытаюсь портировать свою программу с Delphi на Lazarus


Tai>С какой целью?


Скомпилировать под Linux и Mac.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[4]: Кроссплатформенный tchart в Delphi и Lazarus
От: SаNNy Россия  
Дата: 16.12.22 11:30
Оценка:
Здравствуйте, paradok, Вы писали:

P>В Delphi открываем Component -> Import ActiveX Control...


ActiveX для линукса — это сильно, м-да...
Re[5]: Кроссплатформенный tchart в Delphi и Lazarus
От: paradok  
Дата: 16.12.22 13:22
Оценка:
Здравствуйте, SаNNy, Вы писали:

SNN>Здравствуйте, paradok, Вы писали:


P>>В Delphi открываем Component -> Import ActiveX Control...


SNN>ActiveX для линукса — это сильно, м-да...


но TWebBrowser работает там? если лазарь не умеет интегрировать в прогу браузер то он полное дерьмо и отстой,
а если умеет то наверняка есть какие-то механизмы обмена данными с внедренным браузером или их можно придумать и реализовать

и что такого делает ваша програ что нельзя ее сделать веб_клиент-серверной?
Re[3]: Кроссплатформенный tchart в Delphi и Lazarus
От: paradok  
Дата: 16.12.22 13:28
Оценка:
Здравствуйте, Khimik, Вы писали:

K>Здравствуйте, Tai, Вы писали:


K>>>Пытаюсь портировать свою программу с Delphi на Lazarus


Tai>>С какой целью?


K>Скомпилировать под Linux и Mac.


под мак Дельфи пашет норм. А линукс занимает сотые доли процента и наиг не нужен кроме серверных
оставьте вою маниовщину и несбыточные мечты
Re[4]: Кроссплатформенный tchart в Delphi и Lazarus
От: Tai Казахстан  
Дата: 16.12.22 13:30
Оценка:
Здравствуйте, paradok, Вы писали:

K>>Скомпилировать под Linux и Mac.


P>под мак Дельфи пашет норм. А линукс занимает сотые доли процента и наиг не нужен кроме серверных


Вроде и под Линукс Delphi может (crossvcl или fmxLinux)
Re[6]: Кроссплатформенный tchart в Delphi и Lazarus
От: flаt  
Дата: 16.12.22 13:31
Оценка:
Здравствуйте, paradok, Вы писали:

P>но TWebBrowser работает там? если лазарь не умеет интегрировать в прогу браузер то он полное дерьмо и отстой,

P>а если умеет то наверняка есть какие-то механизмы обмена данными с внедренным браузером или их можно придумать и реализовать

Как вариант, завернуть https://github.com/webview/webview в компонент. Я не знаю, насколько современный TWebBrowser — раньше он юзал какую-то древнюю версию IE. Судя по https://docwiki.embarcadero.com/Libraries/Sydney/en/FMX.WebBrowser.TWebBrowser — работает на всех платформах, но это FMX, а Кхимик не хочет их.
Отредактировано 16.12.2022 13:34 flаt . Предыдущая версия .
Re[5]: Кроссплатформенный tchart в Delphi и Lazarus
От: paradok  
Дата: 16.12.22 13:34
Оценка:
Здравствуйте, Tai, Вы писали:

Tai>Здравствуйте, paradok, Вы писали:


K>>>Скомпилировать под Linux и Mac.


P>>под мак Дельфи пашет норм. А линукс занимает сотые доли процента и наиг не нужен кроме серверных


Tai>Вроде и под Линукс Delphi может (crossvcl или fmxLinux)


ну и супер пупер ява-скрипт гарфики всяко в 100 раз круче любого компонента
вот обзор 10 лучших на хабре
https://habr.com/ru/post/457946/
Re[4]: Кроссплатформенный tchart в Delphi и Lazarus
От: Khimik  
Дата: 17.12.22 07:17
Оценка:
Здравствуйте, paradok, Вы писали:

K>>>>Пытаюсь портировать свою программу с Delphi на Lazarus


Tai>>>С какой целью?


K>>Скомпилировать под Linux и Mac.


P>под мак Дельфи пашет норм. А линукс занимает сотые доли процента и наиг не нужен кроме серверных

P>оставьте вою маниовщину и несбыточные мечты

Если не ошибаюсь, во-первых портировать программу с VCL на FMX сложнее, чем с VCL на LCL. Я слышал что FMX глючное, правильно ли я понимаю что Delphi до сих пор не скомпилировал сам себя под Mac?
И ещё мне очень интересна тема создания web-приложений в Lazarus, через CGI.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[2]: Кроссплатформенный tchart в Delphi и Lazarus
От: Khimik  
Дата: 17.12.22 09:16
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Тут человек описывает в том числе и борьбу с TChart в лазаре https://habr.com/ru/post/534466/


Прошу прощения, может быть я совсем туплю, но не могу понять текст по ссылке:

Одной из основных проблем при портировании программы оказалось наличие компонента для построения графиков (2-х и 3-х мерных). Это обусловлено тем, что программа предназначена для расчёта динамики систем и результаты её работы именно в виде графиков в основном и представляются пользователю. Под Delphi в Windows мы использовали известный и достаточно качественный компонент TeeChart Pro от Steema software надо которым была сделана надстройка, которая этим компонентом управляла. Фирма даже его купила за 100 баксов официально и мы при разработке под Windows используем версию от 2017 года которая нас абсолютно полностью устраивает. Данная подсистема представляет одну из самых важных и сложных алгоритмически частей программного комплекса.

При портировании на Linux оказалось что в составе Lazarus штатно компонента этого нет, что меня сильно огорчило. Первоначально была сделана попытка использовать имеющийся в нём аналог — TAChart, который имеет схожий функционал. Соответственно в коде управляющей надстройки были сделаны IFDEF-ы и построение графика было переделано на этот компонент, но оказалось что он по визуальному представлению и некоторым очень необходимым функциям уступает TChart-у в Delphi (в частности не позволяет расположить вертикальные шкалы в одну линейку на разных уровнях).

При внимательном рассмотрении исходников компонента TeeChart Pro обнаружились забавные артефакты:

[рис]

А в коде обнаружилось следующее:

[рис]

Ой что же это такое ! Это вжжж неспроста подумал я почесав опилки в голове ! Оказывается кто-то этот компонент начинал портировать под LCL и даже что-то умудрился сделать !

Далее была проделана некоторая подготовительная работа для того, чтобы попробовать всё на Code Typhon:

— Все найденные в Source .pas, .lpr, .lfm файлы были переконвертированы в формат UTF8+BOM для корректного восприятия их компилятором в Linux.

— У файлов .lfm расширение было изменено на .frm которое принято для форм в среде CodeTyphon по дефолту.

— Имя файла teechart.lpk было изменено на teechart.ctpkg

— Во всех файлах где были ссылки на lfm-файлы тоже был автоматом заменён IFDEF:


Я так и не понял — авторы использовали teechart или tachart? Если первое, где они нашли эти исходники напр. teeanimationeditors.lfm и прочие из картинки? Может быть в Delphi? Я в своём этих файлов не нашёл.
"Ты должен сделать добро из зла, потому что его больше не из чего сделать". АБ Стругацкие.
Re[3]: Кроссплатформенный tchart в Delphi и Lazarus
От: Jack128  
Дата: 17.12.22 12:03
Оценка:
Здравствуйте, Khimik, Вы писали:

K>Здравствуйте, Jack128, Вы писали:


J>>Тут человек описывает в том числе и борьбу с TChart в лазаре https://habr.com/ru/post/534466/


K>Прошу прощения, может быть я совсем туплю, но не могу понять текст по ссылке:


K>

K>Одной из основных проблем при портировании программы оказалось наличие компонента для построения графиков (2-х и 3-х мерных). Это обусловлено тем, что программа предназначена для расчёта динамики систем и результаты её работы именно в виде графиков в основном и представляются пользователю. Под Delphi в Windows мы использовали известный и достаточно качественный компонент TeeChart Pro от Steema software надо которым была сделана надстройка, которая этим компонентом управляла. Фирма даже его купила за 100 баксов официально и мы при разработке под Windows используем версию от 2017 года которая нас абсолютно полностью устраивает. Данная подсистема представляет одну из самых важных и сложных алгоритмически частей программного комплекса.

K>При портировании на Linux оказалось что в составе Lazarus штатно компонента этого нет, что меня сильно огорчило. Первоначально была сделана попытка использовать имеющийся в нём аналог — TAChart, который имеет схожий функционал. Соответственно в коде управляющей надстройки были сделаны IFDEF-ы и построение графика было переделано на этот компонент, но оказалось что он по визуальному представлению и некоторым очень необходимым функциям уступает TChart-у в Delphi (в частности не позволяет расположить вертикальные шкалы в одну линейку на разных уровнях).

K>При внимательном рассмотрении исходников компонента TeeChart Pro обнаружились забавные артефакты:

K>[рис]

K>А в коде обнаружилось следующее:

K>[рис]

K>Ой что же это такое ! Это вжжж неспроста подумал я почесав опилки в голове ! Оказывается кто-то этот компонент начинал портировать под LCL и даже что-то умудрился сделать !

K>Далее была проделана некоторая подготовительная работа для того, чтобы попробовать всё на Code Typhon:

K>- Все найденные в Source .pas, .lpr, .lfm файлы были переконвертированы в формат UTF8+BOM для корректного восприятия их компилятором в Linux.

K>- У файлов .lfm расширение было изменено на .frm которое принято для форм в среде CodeTyphon по дефолту.

K>- Имя файла teechart.lpk было изменено на teechart.ctpkg

K>- Во всех файлах где были ссылки на lfm-файлы тоже был автоматом заменён IFDEF:


K>Я так и не понял — авторы использовали teechart или tachart?


Ну судя по тексту они юзали

TeeChart Pro от Steema


K> Если первое, где они нашли эти исходники напр. teeanimationeditors.lfm и прочие из картинки? Может быть в Delphi?

Опять же судя по тексту — в сорцах этого teechart.
Но нашему софту графики не нужны, поэтому лично я — ни с этим компонентом не работал, просто вспомнил, что читал про это на хабре и кинул ссылку.
Re: Кроссплатформенный tchart в Delphi и Lazarus
От: sqrt  
Дата: 18.12.22 10:39
Оценка:
Здравствуйте, Khimik, Вы писали:

Как вариант, можно к Lazarus прикрутить PythonForLazarus, генерить графики в файл c помощью библиотеки matplotlib, картинки потом из файла на форму загружать.
Re[5]: Кроссплатформенный tchart в Delphi и Lazarus
От: paradok  
Дата: 18.12.22 10:53
Оценка:
Здравствуйте, Khimik, Вы писали:

K>Здравствуйте, paradok, Вы писали:


K>>>>>Пытаюсь портировать свою программу с Delphi на Lazarus


Tai>>>>С какой целью?


K>>>Скомпилировать под Linux и Mac.


P>>под мак Дельфи пашет норм. А линукс занимает сотые доли процента и наиг не нужен кроме серверных

P>>оставьте вою маниовщину и несбыточные мечты

K> Я слышал что FMX глючное

злобная клевета мучеников лазаря и си-шарповцев
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.