Страница 2 из 2
Re: Картинки в заголовке TabSheet
Добавлено:
03.01.2019 21:55:31
zoltanleo
Снег Север писал(а): я часто встречаюсь с необходимостью только немного расширить стандартный функционал компонента и не собираюсь городить наследников, если хватает хелпера.
Попробуй в хелпере переопределить WMPaint
Снег Север писал(а):Как я понимаю, у топикстартера проблема в определении координат заголовка.
Нет, проблему я решил.
- Код: Выделить всё
procedure TForm1.PgCtrlChange(Sender: TObject);
var R: TRect;
begin
if PgCtrl.PageCount = 0 then Exit;
R:= PgCtrl.TabRect(PgCtrl.ActivePageIndex);
Self.Caption:= Format('Left = %d | Top = %d | PageIndex = %d | Caption = %s',
[R.Left + PgCtrl.Left + 2,
R.Top + PgCtrl.Top + offset,
PgCtrl.ActivePageIndex,
PgCtrl.ActivePage.Caption]);
end;
Осталось только отрисовать кнопку справа и прочие мелочи.
Re: Картинки в заголовке TabSheet
Добавлено:
03.01.2019 23:24:29
Лекс Айрин
Снег Север, ну да, практика последних лет это четко показывает.
Добавлено спустя 4 минуты 56 секунд:
zoltanleo, а что, контекст ярлычка/окна недоступен? Рисуется кнопка на контексте так, что чистый фон фиг получишь.
Re: Картинки в заголовке TabSheet
Добавлено:
04.01.2019 06:45:33
Снег Север
Лекс Айрин писал(а):Снег Север, ну да, практика последних лет это четко показывает.
Извините, не могу понять логику. Наследник - это не дыра, а хелпер - дыра??? Как это у вас выходит?
Re: Картинки в заголовке TabSheet
Добавлено:
04.01.2019 08:40:46
Лекс Айрин
Снег Север, наследник делается по четким правилам, с соблюдением уровней доступа, а хелпер, согласно твоим же словам, быстрый Хак для доступа к ЛЮБЫМ полям класса. Более того, само наличие хелперов уже подрывает основы ооп.
Re: Картинки в заголовке TabSheet
Добавлено:
04.01.2019 08:52:41
Снег Север
Лекс Айрин, по-прежнему мне непонятна логика. Наследник имеет доступ к полям предка, хелпер имеет доступ к полям исходного класса. Безопасность в любом случае обеспечивается программистом в его коде. Наследник позволяет больше, в т.ч. сделать бОльшую дыру в безопасности, о которой вы столь печетесь (мне это вообще как-то "перпендикулярно"). Хелпер позволяет меньше, зато реализация намного проще и удобнее.
Re: Картинки в заголовке TabSheet
Добавлено:
04.01.2019 09:13:11
Лекс Айрин
Снег Север, если честно, то мне лень спамить здесь дальше. Просто нужно понять принципы ооп.
Re: Картинки в заголовке TabSheet
Добавлено:
04.01.2019 09:34:37
Снег Север
Лекс Айрин писал(а):Просто нужно понять принципы ооп.
Принципы ООП придуманы для удобства. Чтобы писать меньше кода, в основном. Никакая "безопасность" там и близко не стояла. Изначально ничего похожего на закрытые секции кода там не существовало. Для меня "безопасность" за счет ограничения доступа к полям - вредная бессмыслица.
Re: Картинки в заголовке TabSheet
Добавлено:
04.01.2019 10:58:09
Лекс Айрин
Снег Север, вообще-то существовала, но скорее как побочный эффект. Да и закрытая секция была изначально. Фактически, проперти есть аналог открытой секции, а все остальное закрытой.
Re: Картинки в заголовке TabSheet
Добавлено:
04.01.2019 12:17:57
zoltanleo
Снег Север/Лекс Айрин
Комрады, по теме топика конкретные мысли и дельные советы (лучше с кодом) есть?
Re: Картинки в заголовке TabSheet
Добавлено:
04.01.2019 14:06:41
Лекс Айрин
zoltanleo,у меня пока не особо. Разве только действительно получить контекст компонента и рисовать на нем. Не заморачиваясь с тюнингом компонента. Проверить не могу, так как нет возможности включить комп.
Re: Картинки в заголовке TabSheet
Добавлено:
09.01.2019 22:08:18
Python
Наковырял статью для рисования на WinAPI:
https://docs.microsoft.com/en-us/window ... b-controlsВроде как даже по материалам статьи что-то рисуется. Кроссплатформенного решения найти навскидку мне не удалось.