Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.06.22;
Скачать: [xml.tar.bz2];

Вниз

Font.Size в конструкторе TLabel не устанавливается   Найти похожие ветки 

 
Kolan ©   (2008-05-26 18:28) [0]

Здравствуйте,
 
Есть протой потомок TLabel. В его конструкторе ему же устанавливается размер шрифта.
constructor TScreenLabel.Create(AOwner: TComponent);
begin
 inherited;
 Font.Size := 8;
end;


На форме лежит экземпляр этого TScreenLabel с другим размером шрифта. Так вот в запушеной программе шрифт то, что был в дизайнере, а не тот, что задан в конструкторе.

Как задать шрифт лэйбла изнутри самого лэйбла при его создании?


 
Reindeer Moss Eater ©   (2008-05-26 18:29) [1]

паблишеб свойства окончательно инициализируются в методе Load


 
Reindeer Moss Eater ©   (2008-05-26 18:29) [2]

... который вызывается позже конструктора


 
Kolan ©   (2008-05-26 18:39) [3]

Благодарю, получилось.


 
Kolan ©   (2008-05-26 18:39) [4]

Только метод Loaded называется, вроде других похожих не нашел.


 
Reindeer Moss Eater ©   (2008-05-26 18:44) [5]

ну да. он самый


 
Reindeer Moss Eater ©   (2008-05-26 18:45) [6]

Благодарю, получилось.

Дай угадаю, ты вот это перенес в лоадед?

Font.Size := 8;

:)))


 
Kolan ©   (2008-05-26 18:51) [7]

Ну да, а как?


 
Reindeer Moss Eater ©   (2008-05-26 19:42) [8]

ты забыл про dfm и про то, где сохраняются паблишед свойства установленные в дизайн-тайме.


 
Kolan ©   (2008-05-26 19:45) [9]

> ты забыл про dfm и про то, где сохраняются паблишед свойства
> установленные в дизайн-тайме.

Ну там сохраняются — знаю/помню. Пока не дошло что не так.


 
Reindeer Moss Eater ©   (2008-05-26 20:23) [10]

общий принцип:
в конструкторе инициализируем паблишед свойство каким-то значением.
в самом свойстве определяем ему default значение совпадающее с тем что в конструкторе. в дфм при этом ничего не попадет, если явно не указано что свойство следует сохранять всегда. Получаем:
после конструктора свойство приняло значение 8.
вызывается лоадед, в котором читается ресурс дфм и свойствам присваиваются значения выставленные в дизайне.

если там нет сохраненного значения, то значение не поменяется.
если что-то есть в дфм, то значение перепишется на хранимое в дфм.


 
Kolan ©   (2008-05-26 20:37) [11]

Ок, понял, благодарю.


 
Юрий Зотов ©   (2008-05-26 22:34) [12]

> Reindeer Moss Eater ©   (26.05.08 20:23) [10]

> вызывается лоадед, в котором читается ресурс дфм

Не читается DFM в Loaded. К моменту вызова Loaded DFM уже прочитан. В этом весь смысл Loaded и есть, что в нем уже после загрузки DFM можно произвести нужные дополнительные действия.

> и свойствам присваиваются значения выставленные в дизайне.

Вот это как раз происходит при чтении DFM. То есть, до вызова Loaded.


 
Юрий Зотов ©   (2008-05-26 22:37) [13]

> Kolan

Посмотри в коде VCL, зачем нужно и что делает ParentFont.


 
Kolan ©   (2008-05-26 22:53) [14]

При изменении посылает CM_PARENTFONTCHANGED с параметрами 0 0. При получении сообщения, из-за параметров, устанавливается фонт родителя.

Туда смотрю?


 
Юрий Зотов ©   (2008-05-26 22:58) [15]

> Kolan ©   (26.05.08 22:53) [14]

Угу, туда. Теперь прикинь, а не сбивает ли этот механизм при загрузке DFM тот размер фонта, что ты выставил в конструкторе? Проследи всю цепочку загрузки.


 
Германн ©   (2008-05-27 01:06) [16]


> Юрий Зотов ©   (26.05.08 22:37) [13]

Я угадал, я угадал! Но не рискнул высказаться, ибо не достиг ещё 2-го уровня. :)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.06.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.48 MB
Время: 0.048 c
15-1210171008
fics
2008-05-07 18:36
2008.06.22
Как срубить капусты?


2-1211812095
Kolan
2008-05-26 18:28
2008.06.22
Font.Size в конструкторе TLabel не устанавливается


15-1210112553
Дрёма
2008-05-07 02:22
2008.06.22
Результат функции всегда по-умолчанию нулевой?


8-1182176117
kyro
2007-06-18 18:15
2008.06.22
продолжительность mp3


15-1210016615
AEN
2008-05-05 23:43
2008.06.22
Шахматная пошаговая стретегия...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский