Картинки в заголовке TabSheet

Общие вопросы программирования, алгоритмы и т.п.

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

Картинки в заголовке TabSheet

Сообщение zoltanleo » 02.01.2019 02:40:18

Доброго времени суток, комрады.

Глянул исходники PageControl'а и сабжа. Чего-то все так печально. OwnerDraw в published-свойствах закомментирован, Options (те, которые nboShowCloseButtons, nboShowAddTabButton) не работают, хотя эвент для кнопки закрытия присутствует.

Стоит банальная задача, справа нарисовать кнопку закрытия вкладки. Подскажите, куда копать, где рисовать?
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 297
Зарегистрирован: 17.10.2013 10:55:01

Re: Картинки в заголовке TabSheet

Сообщение Снег Север » 02.01.2019 09:00:52

Делать helper к PageControl или своего наследника PageControl'а или поискать готовый компонент с нужными свойствами. Ваш Кэп.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2068
Зарегистрирован: 27.11.2007 16:14:47

Re: Картинки в заголовке TabSheet

Сообщение zoltanleo » 02.01.2019 12:43:30

Наследник и подразумевался. Рисовать-то где?
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 297
Зарегистрирован: 17.10.2013 10:55:01

Re: Картинки в заголовке TabSheet

Сообщение mig-31 » 02.01.2019 13:13:34

Проще всего собрать проект под Qt там это реализовано и кроссплатформенно или использовать компонент ATTabs
http://wiki.freepascal.org/ATTabs

Потом есть Lazarus_Custom_Drawn_Controls но там все своими руками дописывать.
mig-31
постоялец
 
Сообщения: 199
Зарегистрирован: 14.07.2011 13:46:48

Re: Картинки в заголовке TabSheet

Сообщение Снег Север » 02.01.2019 13:14:05

На Canvas контрола.
Я бы ограничился helper'ом - слишком мелкая задача для компонента-наследника.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2068
Зарегистрирован: 27.11.2007 16:14:47

Re: Картинки в заголовке TabSheet

Сообщение zub » 03.01.2019 00:02:50

А как хелпер поможет поменять поведение контрола?
Даже наследником не всегда всё можно нарисовать\отловить
zub
долгожитель
 
Сообщения: 2505
Зарегистрирован: 14.11.2005 23:51:26

Re: Картинки в заголовке TabSheet

Сообщение zoltanleo » 03.01.2019 05:28:57

Нет принципиальной разницы между наследником и хелпером для моих задач, за исключением нюансов. Я просто перекрыл WMPaint в наследнике и все.

Но пока ищу решение одной проблемы. Мне нужно получить координаты заголовка активной вкладки. В дельфях это решается просто в OnDrawTab, там Rect можно получить из параметров события. В Лазаревском PageControl'е в исходниках Мамай прошелся - такой бардак. Есть идеи?
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 297
Зарегистрирован: 17.10.2013 10:55:01

Re: Картинки в заголовке TabSheet

Сообщение Снег Север » 03.01.2019 08:21:34

zub писал(а):А как хелпер поможет поменять поведение контрола?

helper имеет доступ ко всем скрытым полям и свойствам основного компонента и позволяет поменять всё
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2068
Зарегистрирован: 27.11.2007 16:14:47

Re: Картинки в заголовке TabSheet

Сообщение Vadim » 03.01.2019 10:02:43

zoltanleo писал(а):В дельфях это решается просто в OnDrawTab...

Разработчики пишуть, что в Lazarus эту процедуру потеряли где-то в одной из предыдущих версий... :-D
Оттуда, где Мамай прошёлся... писал(а):property streamed in older Lazarus revision.

;-)
Vadim
долгожитель
 
Сообщения: 3661
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Картинки в заголовке TabSheet

Сообщение zub » 03.01.2019 15:07:11

>>helper имеет доступ ко всем скрытым полям и свойствам основного компонента и позволяет поменять всё
то такое... поле не открыто - это или баг или лезти туда не стоит. кароче всяко лезти туда не стоит))
zub
долгожитель
 
Сообщения: 2505
Зарегистрирован: 14.11.2005 23:51:26

Re: Картинки в заголовке TabSheet

Сообщение Снег Север » 03.01.2019 15:21:28

zub???
helper - великолепная альтернатива для создания наследников стандартных компонентов, если дополнения невелики. Основной код не трогается, мороки несравненно меньше. На делфи пользуюсь давно и часто.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2068
Зарегистрирован: 27.11.2007 16:14:47

Re: Картинки в заголовке TabSheet

Сообщение zub » 03.01.2019 16:43:11

Снег Север
Я тебя не понимаю.
хелпером не сделать то что можно в наследнике, такчто это никакая не альтернатива - сахарок синтаксический, не больше
zub
долгожитель
 
Сообщения: 2505
Зарегистрирован: 14.11.2005 23:51:26

Re: Картинки в заголовке TabSheet

Сообщение Снег Север » 03.01.2019 19:47:56

zub,
я же не спорю, что в наследнике можно сделать больше, но я часто встречаюсь с необходимостью только немного расширить стандартный функционал компонента и не собираюсь городить наследников, если хватает хелпера.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2068
Зарегистрирован: 27.11.2007 16:14:47

Re: Картинки в заголовке TabSheet

Сообщение Лекс Айрин » 03.01.2019 21:00:19

Снег Север, но хелперы же реально дыра в безопастности. Впрочем, сейчас на нее забивают большой болт, так что удивляться нечему.
А, кстати, что мешает просто тупо размещать кнопку поверх заголовка вкладки? Или одну кнопку поверх всего компонента для закрытия текущей страницы?
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

Re: Картинки в заголовке TabSheet

Сообщение Снег Север » 03.01.2019 21:48:38

Снег Север писал(а):Снег Север, но хелперы же реально дыра в безопастности.

Не понимаю этого. С таким же успехом можно любой свой код назвать "дырой в безопастности". :D
Лекс Айрин писал(а):А, кстати, что мешает просто тупо размещать кнопку поверх заголовка вкладки?

Как я понимаю, у топикстартера проблема в определении координат заголовка.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2068
Зарегистрирован: 27.11.2007 16:14:47

След.

Вернуться в Общее

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

Сейчас этот форум просматривают: Bing [Bot] и гости: 2

Рейтинг@Mail.ru