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

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

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

Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

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

Сообщение zoltanleo »

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

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

Стоит банальная задача, справа нарисовать кнопку закрытия вкладки. Подскажите, куда копать, где рисовать?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

Делать helper к PageControl или своего наследника PageControl'а или поискать готовый компонент с нужными свойствами. Ваш Кэп.
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

Наследник и подразумевался. Рисовать-то где?
mig-31
постоялец
Сообщения: 224
Зарегистрирован: 14.07.2011 13:46:48

Сообщение mig-31 »

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

Потом есть Lazarus_Custom_Drawn_Controls но там все своими руками дописывать.
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

На Canvas контрола.
Я бы ограничился helper'ом - слишком мелкая задача для компонента-наследника.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

А как хелпер поможет поменять поведение контрола?
Даже наследником не всегда всё можно нарисовать\отловить
Аватара пользователя
zoltanleo
постоялец
Сообщения: 459
Зарегистрирован: 17.10.2013 10:55:01

Сообщение zoltanleo »

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

Но пока ищу решение одной проблемы. Мне нужно получить координаты заголовка активной вкладки. В дельфях это решается просто в OnDrawTab, там Rect можно получить из параметров события. В Лазаревском PageControl'е в исходниках Мамай прошелся - такой бардак. Есть идеи?
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

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

helper имеет доступ ко всем скрытым полям и свойствам основного компонента и позволяет поменять всё
Vadim
долгожитель
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Сообщение Vadim »

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

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

;-)
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

>>helper имеет доступ ко всем скрытым полям и свойствам основного компонента и позволяет поменять всё
то такое... поле не открыто - это или баг или лезти туда не стоит. кароче всяко лезти туда не стоит))
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

zub???
helper - великолепная альтернатива для создания наследников стандартных компонентов, если дополнения невелики. Основной код не трогается, мороки несравненно меньше. На делфи пользуюсь давно и часто.
zub
долгожитель
Сообщения: 2889
Зарегистрирован: 14.11.2005 22:51:26
Контактная информация:

Сообщение zub »

Снег Север
Я тебя не понимаю.
хелпером не сделать то что можно в наследнике, такчто это никакая не альтернатива - сахарок синтаксический, не больше
Аватара пользователя
Снег Север
долгожитель
Сообщения: 3067
Зарегистрирован: 27.11.2007 15:14:47
Контактная информация:

Сообщение Снег Север »

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

Сообщение Лекс Айрин »

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

Сообщение Снег Север »

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

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

Как я понимаю, у топикстартера проблема в определении координат заголовка.
Ответить