Нормальные табы

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Нормальные табы

Сообщение mr.denton » 09.09.2010 23:31:17

Вопрос.
Потребовалось написать оконное приложение, вспомнил лазаря, поставил, начал кидать компоненты. Проблема. Нужны табы с кнопками закрытия на оных. В стандартной поставке таких нет, рисовать что-то на них самому - тоскливо, реализовывать логику табов из других компонентов - не тру. Может кто знает хорошее решение?
Аватара пользователя
mr.denton
новенький
 
Сообщения: 23
Зарегистрирован: 30.04.2006 03:23:07

Re: Нормальные табы

Сообщение Nik » 10.09.2010 11:57:32

Писать наследника от стандартного PageControl и добавлять Button или Image на каждый таб.
Аватара пользователя
Nik
энтузиаст
 
Сообщения: 573
Зарегистрирован: 04.02.2006 00:08:09
Откуда: Киров

Re: Нормальные табы

Сообщение скалогрыз » 10.09.2010 17:39:01

у объектов TNotebook (закладка Additionals) и TExtendedNotebook (LazControls)
есть свойство Options, где nboShowCloseButtons нужно поставить в true.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Нормальные табы

Сообщение .wOvAN » 11.09.2010 00:59:06

скалогрыз писал(а):у объектов TNotebook (закладка Additionals) и TExtendedNotebook (LazControls)
есть свойство Options, где nboShowCloseButtons нужно поставить в true.


Это только QT и в GTK возможно работает, а вот win32 не реализовано.
.wOvAN
постоялец
 
Сообщения: 118
Зарегистрирован: 16.04.2010 06:36:12

Re: Нормальные табы

Сообщение скалогрыз » 11.09.2010 08:30:25

.wOvAN писал(а):Это только QT и в GTK возможно работает, а вот win32 не реализовано.

верное дополнение!
но:
1) что мешает реализовать? ;)
2) автор не обмолвился под какую систему он пишет. Да и Qt, и Gtk2 есть под винду.
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Нормальные табы

Сообщение Timid » 11.09.2010 11:25:22

Табы можно отрисовывать самому, это же просто. И щелчок на табе можно поймать.
Совсем ведь не сложно.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: Нормальные табы

Сообщение .wOvAN » 11.09.2010 11:39:25

Ну реализовать сложнее чем в дельфи, так как событий отрисовки табов LCL не дает для обработки, нужно копаться в коде который плавно уходит в код виджетов, в общем чтобы раскопать и реализовать нужна большая лопата :)
.wOvAN
постоялец
 
Сообщения: 118
Зарегистрирован: 16.04.2010 06:36:12

Re: Нормальные табы

Сообщение Timid » 11.09.2010 14:07:18

Ну, нужно ведь все равно сделать свою отрисовку. Функциональности то такой виджеты по-умолчанию не дают. :(
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: Нормальные табы

Сообщение hinst » 11.09.2010 14:44:29

можно на каждую вкладку в отдельности нацепить по кнопочке, это проще всего. просто тогда юзверь сможет закрыть только ту вкладку, которая щас активна
Аватара пользователя
hinst
энтузиаст
 
Сообщения: 781
Зарегистрирован: 12.04.2008 18:32:38

Re: Нормальные табы

Сообщение mr.denton » 12.09.2010 13:37:41

скалогрыз писал(а):у объектов TNotebook (закладка Additionals) и TExtendedNotebook (LazControls)
есть свойство Options, где nboShowCloseButtons нужно поставить в true.

Вот это уже интересно, попробую сегодня.
скалогрыз писал(а):
.wOvAN писал(а):Это только QT и в GTK возможно работает, а вот win32 не реализовано.

верное дополнение!
но:
1) что мешает реализовать? ;)
2) автор не обмолвился под какую систему он пишет. Да и Qt, и Gtk2 есть под винду.

Т.к. предполагается еще и винда, вопрос второй: как заставить lazarus использовать Gtk под виндами?
Timid писал(а):Табы можно отрисовывать самому, это же просто. И щелчок на табе можно поймать.
Совсем ведь не сложно.

Мы не ищем легких путей :)
Аватара пользователя
mr.denton
новенький
 
Сообщения: 23
Зарегистрирован: 30.04.2006 03:23:07

Re: Нормальные табы

Сообщение Vadim » 12.09.2010 16:10:01

mr.denton писал(а):как заставить lazarus использовать Gtk под виндами?

Как минимум - поставить себе набор GTKашных библиотек и заново перекомпилировать Lazarus. Но вот именно в этом месте порылась хитрая, но весьма шелудивая собака. :) Если Вы захотите передать написанную на таком Лазарусе программу на другой компьютер, то вместе с программой придётся передавать и набор GTKашных библиотек.
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Нормальные табы

Сообщение Odyssey » 12.09.2010 16:19:04

mr.denton писал(а):Т.к. предполагается еще и винда, вопрос второй: как заставить lazarus использовать Gtk под виндами?

Теоретически -- так:
1) Открываем консоль с текущей папкой path:\to\lazarus\lcl\interfaces\gtk2, делаем make.
2) В настройках проекта в Лазарусе указываем виджетсет gtk2
3) Собираем проект
4) Качаем gtk для windows, распаковываем (там куча архивов, включая компоненты самой gtk и сторонние библиотеки, от которых она зависит)
5) Запускаем наш проект
6) Смотрим названия библиотек, на которые он ругается, и копируем их из папки распакованного gtk в папку нашей программы.
7) После того как программа запускается, мучаемся с подключением нативного windows-скина для gtk. У меня это в своё время так и не получилось. В качестве источника вдохновения можно поковырять дистрибутив gimp или inkscape под windows, им это как-то удалось :)

Правда, если бы сильно приспичило использовать не win32 виджетсет, я бы собирал под windows с qt. Она на этой платформе выглядит попривычнее чем gtk, даже с учётом использования нативных скинов. Процедура сборки примерно такая же, только ещё понадобится библиотека-адаптер Qt4Pas, ссылки тут.

P.S.
1. Пересобирать весь Lazarus под gtk/qt смысла нет, достаточно пересобирать виджетсет (т.е. сделать make в его папке)
2. Приложение с пустой формой в сумме (исполняемый файл + библиотеки + конфиги, которые нужны gtk для поддержки скинов) выходит примерно в 38 МБайт для gtk и в 37 МБайт для qt. Это с учётом strip, без него ещё +10 МБайт :)
Odyssey
энтузиаст
 
Сообщения: 580
Зарегистрирован: 29.11.2007 17:32:24

Re: Нормальные табы

Сообщение .wOvAN » 12.09.2010 17:53:47

Где то у меня валялся компонент реализующий табы всякие цветные, но глючноват малость, пороюсь может найду.

Добавлено спустя 1 час 26 минут 57 секунд:
то, что хотел найти не нашел, но нашел другой табконтрол с оунердровом маленький пример накатал http://online-tv.net.ru/ExControls.7z
.wOvAN
постоялец
 
Сообщения: 118
Зарегистрирован: 16.04.2010 06:36:12


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

Рейтинг@Mail.ru