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

Вниз

TFont в качестве property   Найти похожие ветки 

 
Sandman25 ©   (2004-07-15 12:04) [0]

В Component writer"s guide написано следующее:

Subcomponents can be any persistent object (any descendant of TPersistent). Unlike separate components that happen to be assigned as the value of a property, the published properties of subcomponents are saved with the component that creates them. In order for this to work, however, the following conditions must be met:

The Owner of the subcomponent must be the component that creates it and uses it as the value of a published property. For subcomponents that are descendants of TComponent, you can accomplish this by setting the Owner property of the subcomponent. For other subcomponents, you must override the GetOwner method of the persistent object so that it returns the creating component.

Но почему тогда при создании свойства типа TFont не нужно создавать его наследника с перекрытым GetOwner? Получается, что TFont.GetOwner вызывает TPersistent.GetOwner, возвращающий nil, и тем не менее, все равно в форме сохраняются свойства Font.Style и т.д.
Подозреваю, что дело в редакторе, который используется для редактирования свойств типа TFont. Попытался его найти через поиск ($Delphi)/Source по фразе RegisterPropertyEditor, но не получилось.


 
Sandman25 ©   (2004-07-15 17:57) [1]

Удалено модератором
Примечание: Создание пустых сообщений


 
Юрий Зотов ©   (2004-07-15 18:39) [2]

Потоковый механизм Delphi по умолчанию рассматривает объектные некомпонентские published-свойства, как ссылки на ВНУТРЕННИЕ объекты (например, Font), а компонентские - как ссылки на ВНЕШНИЕ компоненты (например, PopupMenu). Поэтому по умолчанию первые он пишет, а вторые - нет (считая, что Owner у них - форма и они и так будут сохранены вместе с ней).

Значит, TFont сохраняется по умолчанию, а вот чтобы сохранить ВНУТРЕННИЙ потомок TComponent нужно принимать дополнительные меры - о которых здесь и говорится.


 
Sandman25 ©   (2004-07-16 13:44) [3]

Спасибо!



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

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

Наверх




Память: 0.45 MB
Время: 0.048 c
3-1118205610
Ярослав
2005-06-08 08:40
2005.07.18
Диалог создания строки соеденения в ADOConnection


5-1089577224
Sliski Slimak
2004-07-12 00:20
2005.07.18
Перемещение компонента как в Delphi


3-1118072253
SC
2005-06-06 19:37
2005.07.18
Ниспадающее меню в DBGridEh


9-1111140209
qwe
2005-03-18 13:03
2005.07.18
3D-город (GlScene)


1-1119947114
rolex
2005-06-28 12:25
2005.07.18
Вопрос по TreeView





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский