Страница 1 из 2

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

СообщениеДобавлено: 02.01.2019 02:40:18
zoltanleo
Доброго времени суток, комрады.

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

Стоит банальная задача, справа нарисовать кнопку закрытия вкладки. Подскажите, куда копать, где рисовать?

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

СообщениеДобавлено: 02.01.2019 09:00:52
Снег Север
Делать helper к PageControl или своего наследника PageControl'а или поискать готовый компонент с нужными свойствами. Ваш Кэп.

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

СообщениеДобавлено: 02.01.2019 12:43:30
zoltanleo
Наследник и подразумевался. Рисовать-то где?

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

СообщениеДобавлено: 02.01.2019 13:13:34
mig-31
Проще всего собрать проект под Qt там это реализовано и кроссплатформенно или использовать компонент ATTabs
http://wiki.freepascal.org/ATTabs

Потом есть Lazarus_Custom_Drawn_Controls но там все своими руками дописывать.

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

СообщениеДобавлено: 02.01.2019 13:14:05
Снег Север
На Canvas контрола.
Я бы ограничился helper'ом - слишком мелкая задача для компонента-наследника.

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

СообщениеДобавлено: 03.01.2019 00:02:50
zub
А как хелпер поможет поменять поведение контрола?
Даже наследником не всегда всё можно нарисовать\отловить

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

СообщениеДобавлено: 03.01.2019 05:28:57
zoltanleo
Нет принципиальной разницы между наследником и хелпером для моих задач, за исключением нюансов. Я просто перекрыл WMPaint в наследнике и все.

Но пока ищу решение одной проблемы. Мне нужно получить координаты заголовка активной вкладки. В дельфях это решается просто в OnDrawTab, там Rect можно получить из параметров события. В Лазаревском PageControl'е в исходниках Мамай прошелся - такой бардак. Есть идеи?

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

СообщениеДобавлено: 03.01.2019 08:21:34
Снег Север
zub писал(а):А как хелпер поможет поменять поведение контрола?

helper имеет доступ ко всем скрытым полям и свойствам основного компонента и позволяет поменять всё

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

СообщениеДобавлено: 03.01.2019 10:02:43
Vadim
zoltanleo писал(а):В дельфях это решается просто в OnDrawTab...

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

;-)

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

СообщениеДобавлено: 03.01.2019 15:07:11
zub
>>helper имеет доступ ко всем скрытым полям и свойствам основного компонента и позволяет поменять всё
то такое... поле не открыто - это или баг или лезти туда не стоит. кароче всяко лезти туда не стоит))

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

СообщениеДобавлено: 03.01.2019 15:21:28
Снег Север
zub???
helper - великолепная альтернатива для создания наследников стандартных компонентов, если дополнения невелики. Основной код не трогается, мороки несравненно меньше. На делфи пользуюсь давно и часто.

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

СообщениеДобавлено: 03.01.2019 16:43:11
zub
Снег Север
Я тебя не понимаю.
хелпером не сделать то что можно в наследнике, такчто это никакая не альтернатива - сахарок синтаксический, не больше

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

СообщениеДобавлено: 03.01.2019 19:47:56
Снег Север
zub,
я же не спорю, что в наследнике можно сделать больше, но я часто встречаюсь с необходимостью только немного расширить стандартный функционал компонента и не собираюсь городить наследников, если хватает хелпера.

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

СообщениеДобавлено: 03.01.2019 21:00:19
Лекс Айрин
Снег Север, но хелперы же реально дыра в безопастности. Впрочем, сейчас на нее забивают большой болт, так что удивляться нечему.
А, кстати, что мешает просто тупо размещать кнопку поверх заголовка вкладки? Или одну кнопку поверх всего компонента для закрытия текущей страницы?

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

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

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

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