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

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

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

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

Сообщение zoltanleo » 03.01.2019 21:55:31

Снег Север писал(а): я часто встречаюсь с необходимостью только немного расширить стандартный функционал компонента и не собираюсь городить наследников, если хватает хелпера.

Попробуй в хелпере переопределить 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; 


Осталось только отрисовать кнопку справа и прочие мелочи.
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 246
Зарегистрирован: 17.10.2013 10:55:01

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

Сообщение Лекс Айрин » 03.01.2019 23:24:29

Снег Север, ну да, практика последних лет это четко показывает.

Добавлено спустя 4 минуты 56 секунд:
zoltanleo, а что, контекст ярлычка/окна недоступен? Рисуется кнопка на контексте так, что чистый фон фиг получишь.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4708
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение Снег Север » 04.01.2019 06:45:33

Лекс Айрин писал(а):Снег Север, ну да, практика последних лет это четко показывает.

Извините, не могу понять логику. Наследник - это не дыра, а хелпер - дыра??? Как это у вас выходит?
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 1509
Зарегистрирован: 27.11.2007 16:14:47

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

Сообщение Лекс Айрин » 04.01.2019 08:40:46

Снег Север, наследник делается по четким правилам, с соблюдением уровней доступа, а хелпер, согласно твоим же словам, быстрый Хак для доступа к ЛЮБЫМ полям класса. Более того, само наличие хелперов уже подрывает основы ооп.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4708
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение Снег Север » 04.01.2019 08:52:41

Лекс Айрин, по-прежнему мне непонятна логика. Наследник имеет доступ к полям предка, хелпер имеет доступ к полям исходного класса. Безопасность в любом случае обеспечивается программистом в его коде. Наследник позволяет больше, в т.ч. сделать бОльшую дыру в безопасности, о которой вы столь печетесь (мне это вообще как-то "перпендикулярно"). Хелпер позволяет меньше, зато реализация намного проще и удобнее.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 1509
Зарегистрирован: 27.11.2007 16:14:47

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

Сообщение Лекс Айрин » 04.01.2019 09:13:11

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

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

Сообщение Снег Север » 04.01.2019 09:34:37

Лекс Айрин писал(а):Просто нужно понять принципы ооп.

Принципы ООП придуманы для удобства. Чтобы писать меньше кода, в основном. Никакая "безопасность" там и близко не стояла. Изначально ничего похожего на закрытые секции кода там не существовало. Для меня "безопасность" за счет ограничения доступа к полям - вредная бессмыслица.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 1509
Зарегистрирован: 27.11.2007 16:14:47

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

Сообщение Лекс Айрин » 04.01.2019 10:58:09

Снег Север, вообще-то существовала, но скорее как побочный эффект. Да и закрытая секция была изначально. Фактически, проперти есть аналог открытой секции, а все остальное закрытой.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4708
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение zoltanleo » 04.01.2019 12:17:57

Снег Север/Лекс Айрин
Комрады, по теме топика конкретные мысли и дельные советы (лучше с кодом) есть?
Аватара пользователя
zoltanleo
постоялец
 
Сообщения: 246
Зарегистрирован: 17.10.2013 10:55:01

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

Сообщение Лекс Айрин » 04.01.2019 14:06:41

zoltanleo,у меня пока не особо. Разве только действительно получить контекст компонента и рисовать на нем. Не заморачиваясь с тюнингом компонента. Проверить не могу, так как нет возможности включить комп.
Аватара пользователя
Лекс Айрин
долгожитель
 
Сообщения: 4708
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград

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

Сообщение Python » 09.01.2019 22:08:18

Наковырял статью для рисования на WinAPI:
https://docs.microsoft.com/en-us/window ... b-controls
Вроде как даже по материалам статьи что-то рисуется. Кроссплатформенного решения найти навскидку мне не удалось.
Python
новенький
 
Сообщения: 19
Зарегистрирован: 23.01.2018 21:50:17

Пред.

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

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4

Рейтинг@Mail.ru