Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[3.147.48.212] |
|
Сообщ.
#1
,
|
|
|
Как-то раньше не заморачивалась с масштабированием компонентов. Но теперь приходится.
Все компоненты как компоненты, поменяли свойство Font, а Label "выкаблучивается". Компонент находится на TPanel, который в свою очередь на TForm. У формы, панели и надписи ParentFont = true. У панели ParentColor отключила. Меняю Color у Label, автоматически сбрасывается ParentFont и высота надписи не меняется. В объяснениях свойств компонента говорится, что при изменении свойств надписи ParentFont становится = false. Вопрос такой: никак нельзя поменять цвет текста? Почему Color привязан к панели? Я же отключила ParentColor. Как только цвет надписи становится черным (как на форме и на панели), сразу работает масшлабирование шрифта. В чем "секрет"? |
Сообщ.
#2
,
|
|
|
Какая версия студии?
|
Сообщ.
#3
,
|
|
|
Чего в итоге ты получить-то хочешь? Нарисуй.
|
Сообщ.
#4
,
|
|
|
Сообщ.
#5
,
|
|
|
Да, в общем-то, не Делпфи, а Builder 6.0. С форума отправили к вам. Говорят, ваш вопрос.
Свойства компонент одинаковые. А хочу вот что: при изменении расширения экрана масштабируются формы. Но меняется и шрифт на компонентах. Сделала настройку шрифтов на все компоненты. Гриды, кнопки и т.п. - высота шрифта меняется. Но цвет шрифта совпадает с цветом по умолчанию на форме. У компонента TLabel меняю цвет, например на красный. В этом момент свойство ParentFont автоматически становится = false. Цвет шрифта не меняю, высота надписи меняется, а ParentFont остается = true. Я так понимаю, зависит от версии Delphi/Byilder? |
Сообщ.
#6
,
|
|
|
Цитата laifik @ У компонента TLabel меняю цвет, например на красный. В этом момент свойство ParentFont автоматически становится = false. Почему у меня не становится false? Что я делаю не так? Запили такую же гифку - чо у тебя там происходит. Шансы на разрешение вопроса увеличатся. |
Сообщ.
#7
,
|
|
|
Цитата laifik @ В чем "секрет"? В том, что ты путаешь TLabel.Color - цвет фона надписи, и TFont.Color - цвет шрифта, т.е. самой надписи. Соотв-но, ParentColor = true задает цвет фона контрола, как у родителя, и изменение Color приводит к автоматическому сбросу ParentColor в false. А ParentFont = true задает все параметры шрифта контрола, как у его родителя, и изменение любого параметра Font у контрола приводит к автоматическому сбросу ParentFont в false. |
Сообщ.
#8
,
|
|
|
Нашла единственный вариант: Height Font всех компонентов на форме, свойства которых совпадают с родителем, меняю в цикле. Остаются компоненты, у которых свойства Font поменены (жирный шрифт, цвет шрифта, подчеркивание и т.п.). В событии OnShow формы тупо обрабатываю каждый такой компонент, например
Цитата Label1->Font->Height = -11; Этот вариант работает. Остается надеяться, что таких компонентов, у которых соскакивает ParentFont на форме будет немного. Все-таки, в справке Builder 6.0 написано, что при изменении свойства Font компонентов автоматически сбрасывается ParentFont. Не хотелось в это верить! |
Сообщ.
#9
,
|
|
|
Цитата laifik @ Все-таки, в справке Builder 6.0 написано, что при изменении свойства Font компонентов автоматически сбрасывается ParentFont. Не хотелось в это верить! Хотелось, не хотелось, но св-во ParentFont одно, а св-в у самого Font "несколько". В противном случае пришлось бы вместо одного ParentFont использовать могучую кучку св-в типа ParentFontColor, ParentFontSize и т.п. (или по крайней мере множество set of соответствующих флагов), которые обычным неискушенным "формошлепам" нафиг не нужны Добавлено PS: Хотя, если речь идет только о масштабировании размера шрифта под системные настройки, то можно было бы обойтись и одним доп.свойством |
Сообщ.
#10
,
|
|
|
Так может покурить тему DPI aware ? Все должно масштабироваться автоматом
|