Нормальные табы
Модератор: Модераторы
Нормальные табы
Вопрос.
Потребовалось написать оконное приложение, вспомнил лазаря, поставил, начал кидать компоненты. Проблема. Нужны табы с кнопками закрытия на оных. В стандартной поставке таких нет, рисовать что-то на них самому - тоскливо, реализовывать логику табов из других компонентов - не тру. Может кто знает хорошее решение?
Потребовалось написать оконное приложение, вспомнил лазаря, поставил, начал кидать компоненты. Проблема. Нужны табы с кнопками закрытия на оных. В стандартной поставке таких нет, рисовать что-то на них самому - тоскливо, реализовывать логику табов из других компонентов - не тру. Может кто знает хорошее решение?
у объектов TNotebook (закладка Additionals) и TExtendedNotebook (LazControls)
есть свойство Options, где nboShowCloseButtons нужно поставить в true.
есть свойство Options, где nboShowCloseButtons нужно поставить в true.
скалогрыз писал(а):у объектов TNotebook (закладка Additionals) и TExtendedNotebook (LazControls)
есть свойство Options, где nboShowCloseButtons нужно поставить в true.
Это только QT и в GTK возможно работает, а вот win32 не реализовано.
.wOvAN писал(а):Это только QT и в GTK возможно работает, а вот win32 не реализовано.
верное дополнение!
но:
1) что мешает реализовать?
2) автор не обмолвился под какую систему он пишет. Да и Qt, и Gtk2 есть под винду.
Табы можно отрисовывать самому, это же просто. И щелчок на табе можно поймать.
Совсем ведь не сложно.
Совсем ведь не сложно.
Ну реализовать сложнее чем в дельфи, так как событий отрисовки табов LCL не дает для обработки, нужно копаться в коде который плавно уходит в код виджетов, в общем чтобы раскопать и реализовать нужна большая лопата 
Ну, нужно ведь все равно сделать свою отрисовку. Функциональности то такой виджеты по-умолчанию не дают. 
можно на каждую вкладку в отдельности нацепить по кнопочке, это проще всего. просто тогда юзверь сможет закрыть только ту вкладку, которая щас активна
скалогрыз писал(а):у объектов TNotebook (закладка Additionals) и TExtendedNotebook (LazControls)
есть свойство Options, где nboShowCloseButtons нужно поставить в true.
Вот это уже интересно, попробую сегодня.
скалогрыз писал(а):.wOvAN писал(а):Это только QT и в GTK возможно работает, а вот win32 не реализовано.
верное дополнение!
но:
1) что мешает реализовать?
2) автор не обмолвился под какую систему он пишет. Да и Qt, и Gtk2 есть под винду.
Т.к. предполагается еще и винда, вопрос второй: как заставить lazarus использовать Gtk под виндами?
Timid писал(а):Табы можно отрисовывать самому, это же просто. И щелчок на табе можно поймать.
Совсем ведь не сложно.
Мы не ищем легких путей
mr.denton писал(а):как заставить lazarus использовать Gtk под виндами?
Как минимум - поставить себе набор GTKашных библиотек и заново перекомпилировать Lazarus. Но вот именно в этом месте порылась хитрая, но весьма шелудивая собака.
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 МБайт
Где то у меня валялся компонент реализующий табы всякие цветные, но глючноват малость, пороюсь может найду.
Добавлено спустя 1 час 26 минут 57 секунд:
то, что хотел найти не нашел, но нашел другой табконтрол с оунердровом маленький пример накатал http://online-tv.net.ru/ExControls.7z
Добавлено спустя 1 час 26 минут 57 секунд:
то, что хотел найти не нашел, но нашел другой табконтрол с оунердровом маленький пример накатал http://online-tv.net.ru/ExControls.7z
