Мультиплатформенность
Модератор: Модераторы
Мультиплатформенность
Господа, в очередной раз прошу помощи. Я сейчас пишу приложение, которое должно работать и под виндами и под линуксом. Возник вопрос - как узнать, какие компоненты и функции Лазаруса мультиплатформенные, а какие - специфичные. Например, TTrayIcon - можно ли его использовать и там и там?
Re: Мультиплатформенность
S_Gur
В большинстве случаев компненты работают в разных ОС вполне удовлетворительно. Про TTrayIcon в контексте ОС говорить несколько легкомысленно, т.к. сама Linux иконками вообще не занимается, ими занимается графическая оболочка (ГО). И вот здесь уже всё зависит от реализации системного трея. Разработчики постарались засунуть в компонент процедуры для разных общеупотребительных ГО (KDE, Gnome, IceWM), но как компонент будет работать в Вашем конкретном случае - это только проверка на месте. Например, я делал полупрозрачные окошки для сообщений пользователю. В Плазме всё отлично работает, в Xfce тоже, в OpenBox - приходи кума любоваться, никакой прозрачности. В интернете прочитал, что в этой ГО прозрачность вообще отключена. Попробовал парочку советов, как её задействовать, но ничего не получилось.
В большинстве случаев компненты работают в разных ОС вполне удовлетворительно. Про TTrayIcon в контексте ОС говорить несколько легкомысленно, т.к. сама Linux иконками вообще не занимается, ими занимается графическая оболочка (ГО). И вот здесь уже всё зависит от реализации системного трея. Разработчики постарались засунуть в компонент процедуры для разных общеупотребительных ГО (KDE, Gnome, IceWM), но как компонент будет работать в Вашем конкретном случае - это только проверка на месте. Например, я делал полупрозрачные окошки для сообщений пользователю. В Плазме всё отлично работает, в Xfce тоже, в OpenBox - приходи кума любоваться, никакой прозрачности. В интернете прочитал, что в этой ГО прозрачность вообще отключена. Попробовал парочку советов, как её задействовать, но ничего не получилось.
Re: Мультиплатформенность
Vadim, честно говоря, меня беспокоит не столько то, что та или иная функция не будет работать, сколько то, что программа не скомпилируется потом под линуксом. Падение программы в трей можно отключить, а вот перепахивать полпроекта для переноса в линукс меня ломает, хотелось бы сразу использовать только то, что потом соберется в линуксовом лазарусе. Насколько я понимаю, набор компонент по умолчанию при инсталляции лазаруса одинаковый что под линуксом, что под виндами? Или есть различия?
Re: Мультиплатформенность
S_Gur
Компоненты Lazarus - это только верхний уровень, с которым общается программист. Для любых ОС он всегда одинаков. Вся конкретика работы с той или иной ОС спрятана глубоко внутри и программисту недоступна. Если Вы напрямую не используете те или иные ОС-зависимые функции, то программа компилироваться будет где угодно.
Компоненты Lazarus - это только верхний уровень, с которым общается программист. Для любых ОС он всегда одинаков. Вся конкретика работы с той или иной ОС спрятана глубоко внутри и программисту недоступна. Если Вы напрямую не используете те или иные ОС-зависимые функции, то программа компилироваться будет где угодно.
- serbod
- постоялец
- Сообщения: 449
- Зарегистрирован: 16.09.2016 10:03:02
- Откуда: Минск
- Контактная информация:
Re: Мультиплатформенность
Основные различия - в структуре файловой системы. Но если работать только с "домашней папкой пользователя", то разницы особо нет.
Есть еще ощутимые различия по шрифтам, на одной и той же форме текст может не влезать в кнопки/колонки.
Есть нюанс с многопоточностью, нужно обязательно добавить в начало проекта волшебные строки. Но вроде сейчас Lazarus это автоматом делает.
Есть странности при редактировании текста под линуксом. Это тараканы линукса - настроек клавиатуры, кодировки, итд..
В остальном разницы особой нет, все компилируется и работает. Внешний вид контролов это фигня, он и на одной и той же ОС может отличаться.
Есть еще ощутимые различия по шрифтам, на одной и той же форме текст может не влезать в кнопки/колонки.
Есть нюанс с многопоточностью, нужно обязательно добавить в начало проекта волшебные строки. Но вроде сейчас Lazarus это автоматом делает.
Есть странности при редактировании текста под линуксом. Это тараканы линукса - настроек клавиатуры, кодировки, итд..
В остальном разницы особой нет, все компилируется и работает. Внешний вид контролов это фигня, он и на одной и той же ОС может отличаться.
Re: Мультиплатформенность
Создатели стараются Lazarus сделать мультиплатформенным, на сколько их хватает сил,времени и компетенции.S_Gur писал(а):честно говоря, меня беспокоит не столько то, что та или иная функция не будет работать, сколько то, что программа не скомпилируется потом под линуксом.
Как правило Форма, стандартные элементы и работа с данными - там проблем не должно возникнуть.
Трей-иконка не входит в базовый пакет, поэтому никто не скажет о гарантиях, тем более что в линуксе зоопарк всяких оконных менеджеров, например twm - там одна консоль. Поэтому говорить нельзя о том что в линуксе проги написаные в KDE могут не заработать везде..
есть какой-то обмен между Gnome <-> KDE, в них там можно быть как-то уверенным что заработает.
Добавлено спустя 4 минуты 14 секунд:
есть оконные менеджеры основанные на gtk(Gnome), но есть ли у них "панель управления" и можно ли разместить трейиконку на ней ?
Re: Мультиплатформенность
PortCaption
Что значит "Не входит в базовый пакет?" Под виндами она как раз находится в базовом пакете. Я выше задавал вопрос - есть ли разница в составе базовых пакетов под виндовс и линукс
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Re: Мультиплатформенность
S_Gur, вам проще было бы поставить лазаря под линукс (на виртуалке, например), и посмотреть самому. У меня на virtualbox стоит linux mint mate, там в лазаре и компонент есть, и иконка показывается. Но за весь зоопарк линуксов, конечно, сказать нельзя.
Добавлено спустя 42 минуты 3 секунды:
входит
Добавлено спустя 42 минуты 3 секунды:
olegy123 писал(а):Трей-иконка не входит в базовый пакет
входит
Re: Мультиплатформенность
Снег Север, насколько я помню, у Лазаруса только два вида инсталляторов под Линукс: DEB и RPM. Я на текущий момент и сам не знаю, какой именно из всего зоопарка линуксов мы будем использовать. Соответственно, и непонятно, на каком из них смотреть. Меня интересует только одно: будет ли после инсталляции Лазаруса тот или иной компонент в палитре и не придется ли мне писавшийся как минимум несколько недель под виндами проект при переносе под линукс допиливать еще неделю, вычищая компоненты, которые линуксовая версия не имеет по определению. Будет ли оно работать под конкретным линуксом правильно или нет - это вопрос уже второй. Я хочу знать, отличается ли установленная под разные операционки одна и та же версия Лазаруса набором компонентов или нет. Если этой информации нигде нет, то придется разбираться методом научного тыка, но такие эксперименты занимают время. В любом случае, спасибо за ответ
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Re: Мультиплатформенность
linux mint - форк убунту, там DEB. Компонент есть.
Раз вам надо широкую совместимость, то я бы поставил на виртуалку несколько наиболее популярных разновидностей линукса, на них - лазарь, и проверял.
Раз вам надо широкую совместимость, то я бы поставил на виртуалку несколько наиболее популярных разновидностей линукса, на них - лазарь, и проверял.
- debi12345
- долгожитель
- Сообщения: 5761
- Зарегистрирован: 10.05.2006 23:41:15
- Откуда: Ташкент (Узбекистан)
Re: Мультиплатформенность
Трей-иконка не входит в базовый пакет, поэтому никто не скажет о гарантиях,
В Xorg-е tray-API практически стандартизовано, все современные линёвые десктоп-менджеры этого стандарта придерживаются, поэтому проблем в этом месте быть не должно
Re: Мультиплатформенность
S_Gur
в Object Inspector Лазаря есть вкладка "Restricted"(ограничения).

Можно посмотреть туда
в Object Inspector Лазаря есть вкладка "Restricted"(ограничения).

Можно посмотреть туда
Последний раз редактировалось zoltanleo 09.09.2019 23:47:32, всего редактировалось 1 раз.
Re: Мультиплатформенность
zoltanleo, спасибо, не знал. Буду иметь в виду
