Как я могу сделать TCheckbox без прозрачного текста (то есть: он игнорирует темы)? - PullRequest
0 голосов
/ 01 октября 2009

как я могу сделать TCheckbox без прозрачного текста (т.е. он игнорирует темы)? меня попросили сделать что-то необычное - поставьте флажок вместо заголовка группового поля.

в XP выглядит не очень хорошо.

with xp themes
(источник: xrw.bc.ca )

Затем я подумал, что попробую SetWindowTheme (CheckBox1.Handle, '', ''), о котором я слышал в Интернете. тогда вы получите белый фон, но он не закрасит цветом элемента управления.

no theme
(источник: xrw.bc.ca )

как мы можем это сделать?

спасибо! т.пл.

Ответы [ 4 ]

2 голосов
/ 01 октября 2009

Простым решением было бы поместить достаточно пробелов в свойство TGroupBox.Caption. Более сложным решением было бы извлечь из TGroupBox и использовать FillRect / DrawParentBackground в методе Paint, чтобы закрасить линию.

0 голосов
/ 02 октября 2009

спасибо всем за ваши ответы. в итоге я сделал это:

  1. заполнял заголовок групповой области программно пробелами до правильной ширины.

  2. переместите флажок (без заголовка) в область заголовка.

это не идеальное решение, но кажется, что все в порядке.

0 голосов
/ 02 октября 2009

Разве свойство Color в TCheckbox не делает этого?

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

Поскольку вы не будете знать цвет заранее (из-за того, что не знаете, какая тема используется), вы захотите сделать это динамически во время выполнения при создании формы, например ::

Checkbox.Color := Control.Color;
0 голосов
/ 02 октября 2009

Раньше я просто добавлял пустой флажок TLabel за флажком.

Это делает обслуживание немного болезненным, хотя

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...