Страница 1 из 1

Мультиплатформенность

СообщениеДобавлено: 05.09.2019 22:15:23
S_Gur
Господа, в очередной раз прошу помощи. Я сейчас пишу приложение, которое должно работать и под виндами и под линуксом. Возник вопрос - как узнать, какие компоненты и функции Лазаруса мультиплатформенные, а какие - специфичные. Например, TTrayIcon - можно ли его использовать и там и там?

Re: Мультиплатформенность

СообщениеДобавлено: 06.09.2019 04:15:20
Vadim
S_Gur
В большинстве случаев компненты работают в разных ОС вполне удовлетворительно. Про TTrayIcon в контексте ОС говорить несколько легкомысленно, т.к. сама Linux иконками вообще не занимается, ими занимается графическая оболочка (ГО). И вот здесь уже всё зависит от реализации системного трея. Разработчики постарались засунуть в компонент процедуры для разных общеупотребительных ГО (KDE, Gnome, IceWM), но как компонент будет работать в Вашем конкретном случае - это только проверка на месте. Например, я делал полупрозрачные окошки для сообщений пользователю. В Плазме всё отлично работает, в Xfce тоже, в OpenBox - приходи кума любоваться, никакой прозрачности. В интернете прочитал, что в этой ГО прозрачность вообще отключена. Попробовал парочку советов, как её задействовать, но ничего не получилось.

Re: Мультиплатформенность

СообщениеДобавлено: 06.09.2019 07:36:39
S_Gur
Vadim, честно говоря, меня беспокоит не столько то, что та или иная функция не будет работать, сколько то, что программа не скомпилируется потом под линуксом. Падение программы в трей можно отключить, а вот перепахивать полпроекта для переноса в линукс меня ломает, хотелось бы сразу использовать только то, что потом соберется в линуксовом лазарусе. Насколько я понимаю, набор компонент по умолчанию при инсталляции лазаруса одинаковый что под линуксом, что под виндами? Или есть различия?

Re: Мультиплатформенность

СообщениеДобавлено: 06.09.2019 10:18:30
Vadim
S_Gur
Компоненты Lazarus - это только верхний уровень, с которым общается программист. Для любых ОС он всегда одинаков. Вся конкретика работы с той или иной ОС спрятана глубоко внутри и программисту недоступна. Если Вы напрямую не используете те или иные ОС-зависимые функции, то программа компилироваться будет где угодно.

Re: Мультиплатформенность

СообщениеДобавлено: 06.09.2019 11:12:21
serbod
Основные различия - в структуре файловой системы. Но если работать только с "домашней папкой пользователя", то разницы особо нет.

Есть еще ощутимые различия по шрифтам, на одной и той же форме текст может не влезать в кнопки/колонки.

Есть нюанс с многопоточностью, нужно обязательно добавить в начало проекта волшебные строки. Но вроде сейчас Lazarus это автоматом делает.

Есть странности при редактировании текста под линуксом. Это тараканы линукса - настроек клавиатуры, кодировки, итд..

В остальном разницы особой нет, все компилируется и работает. Внешний вид контролов это фигня, он и на одной и той же ОС может отличаться.

Re: Мультиплатформенность

СообщениеДобавлено: 07.09.2019 07:41:16
olegy123
S_Gur писал(а):честно говоря, меня беспокоит не столько то, что та или иная функция не будет работать, сколько то, что программа не скомпилируется потом под линуксом.
Создатели стараются Lazarus сделать мультиплатформенным, на сколько их хватает сил,времени и компетенции.
Как правило Форма, стандартные элементы и работа с данными - там проблем не должно возникнуть.
Трей-иконка не входит в базовый пакет, поэтому никто не скажет о гарантиях, тем более что в линуксе зоопарк всяких оконных менеджеров, например twm - там одна консоль. Поэтому говорить нельзя о том что в линуксе проги написаные в KDE могут не заработать везде..
есть какой-то обмен между Gnome <-> KDE, в них там можно быть как-то уверенным что заработает.

Добавлено спустя 4 минуты 14 секунд:
есть оконные менеджеры основанные на gtk(Gnome), но есть ли у них "панель управления" и можно ли разместить трейиконку на ней ?

Re: Мультиплатформенность

СообщениеДобавлено: 07.09.2019 07:47:41
S_Gur
PortCaption

Что значит "Не входит в базовый пакет?" Под виндами она как раз находится в базовом пакете. Я выше задавал вопрос - есть ли разница в составе базовых пакетов под виндовс и линукс

Re: Мультиплатформенность

СообщениеДобавлено: 07.09.2019 08:24:30
Снег Север
S_Gur, вам проще было бы поставить лазаря под линукс (на виртуалке, например), и посмотреть самому. У меня на virtualbox стоит linux mint mate, там в лазаре и компонент есть, и иконка показывается. Но за весь зоопарк линуксов, конечно, сказать нельзя.

Добавлено спустя 42 минуты 3 секунды:
olegy123 писал(а):Трей-иконка не входит в базовый пакет

входит

Re: Мультиплатформенность

СообщениеДобавлено: 07.09.2019 09:10:13
S_Gur
Снег Север, насколько я помню, у Лазаруса только два вида инсталляторов под Линукс: DEB и RPM. Я на текущий момент и сам не знаю, какой именно из всего зоопарка линуксов мы будем использовать. Соответственно, и непонятно, на каком из них смотреть. Меня интересует только одно: будет ли после инсталляции Лазаруса тот или иной компонент в палитре и не придется ли мне писавшийся как минимум несколько недель под виндами проект при переносе под линукс допиливать еще неделю, вычищая компоненты, которые линуксовая версия не имеет по определению. Будет ли оно работать под конкретным линуксом правильно или нет - это вопрос уже второй. Я хочу знать, отличается ли установленная под разные операционки одна и та же версия Лазаруса набором компонентов или нет. Если этой информации нигде нет, то придется разбираться методом научного тыка, но такие эксперименты занимают время. В любом случае, спасибо за ответ

Re: Мультиплатформенность

СообщениеДобавлено: 07.09.2019 11:11:03
Снег Север
linux mint - форк убунту, там DEB. Компонент есть.
Раз вам надо широкую совместимость, то я бы поставил на виртуалку несколько наиболее популярных разновидностей линукса, на них - лазарь, и проверял.

Re: Мультиплатформенность

СообщениеДобавлено: 07.09.2019 19:08:18
debi12345
Трей-иконка не входит в базовый пакет, поэтому никто не скажет о гарантиях,

В Xorg-е tray-API практически стандартизовано, все современные линёвые десктоп-менджеры этого стандарта придерживаются, поэтому проблем в этом месте быть не должно

Re: Мультиплатформенность

СообщениеДобавлено: 09.09.2019 20:34:33
zoltanleo
S_Gur
в Object Inspector Лазаря есть вкладка "Restricted"(ограничения).
Изображение

Можно посмотреть туда

Re: Мультиплатформенность

СообщениеДобавлено: 09.09.2019 23:51:00
S_Gur
zoltanleo, спасибо, не знал. Буду иметь в виду