Страница 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
Вроде как даже по материалам статьи что-то рисуется. Кроссплатформенного решения найти навскидку мне не удалось.