Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.22;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.039 c
15-1210154212
brrr
2008-05-07 13:56
2008.06.22
Сбор системного блока


2-1211574528
Otz
2008-05-24 00:28
2008.06.22
Записи в DBGrid


3-1200602988
DeadMeat
2008-01-17 23:49
2008.06.22
Непонятки с ADO или OLE DB


2-1211988642
Smile
2008-05-28 19:30
2008.06.22
Отменить Font.Style


3-1200518524
alexnmsk
2008-01-17 00:22
2008.06.22
соединение с базой