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

Вниз

Published свойства компонентов   Найти похожие ветки 

 
Vlad2   (2002-09-09 07:16) [0]

Здравствуйте !
Кто знает, как решить такую задачку:
После установки в IDE некоего компонента (cmp) на форму (TForm)
в файле m.dfm этой формы прописываются значения published свойств cmp. Таким образом, при выполнении кода, после выполнения конструктора компонента, происходит установка этих значений. Я наивно написал в конструкторе cmp строчку "publishedPropertyAnyDate := Now;" и, естественно, получаю для этого свойства не текущую дату, а дату установки cmp в IDE. Как запретить это переприсваивание для published свойств компонента cmp ?


 
Ученик   (2002-09-09 08:16) [1]

Убрать из объявления свойства write FAnyDate.
А чем AnyDate отличается от Now ?


 
Vlad2   (2002-09-09 08:25) [2]

> Ученик
Убрать возможность write нельзя, во время работы нужно сохранить возможность изменения FAnyDate. По смыслу FAnyDate - это некое граничное значение, по умолчанию равное текущей дате. То, что устанавливается в IDE не имеет значения. Конечно, можно установить текущую дату где нибудь в другом конструкторе или инициализаторе, но неужели нет решения запретить установку значения этого свойства из m.dfm ?


 
Ученик   (2002-09-09 08:32) [3]

property AnyDate : TDateTime read FAnyDate write SetAnyDate;

procedure MyComponent.SetAnyDate(const Value : TDateTime);
begin
if not (csLoading in ComponentState) then
FAnyDate := Value
end;


 
Vlad2   (2002-09-09 08:50) [4]

> Ученик
Да, всё верно !
только не совсем понятно описание:
"This flag is set when the component is first created and not cleared until the component and all its children are fully loaded (when the Loaded method is called)."
Этот флаг устанавливается, когда компонент создаётся первый раз и не очищается до тех пор, пока компонент и все его детёныши полностью не загрузятся. Ничего не понимаю.


 
Ученик   (2002-09-09 08:54) [5]

>Vlad2 (09.09.02 08:50)
Флаг устанавливается на период загрузки компонента (и всех ...) из DFM-файла или ресурса.


 
Vlad2   (2002-09-09 08:59) [6]

> Ученик
О ! "из DFM-файла или ресурса.", тогда ясно. Спасибо, Ученик.
p.s. а кто же тогда я ?


 
Ученик   (2002-09-09 09:07) [7]

>Vlad2 (09.09.02 08:59)
Все мы ученики в каких-то вопросах :-)


 
Юрий Зотов   (2002-09-09 09:53) [8]

Обычно для таких вещей используется метод Loaded. В данном случае без разницы, но, вообще говоря, это грамотнее. Дело в том, что Loaded вызывается после загрузки ВСЕХ компонентов формы и поэтому в Loaded уже разрешены межкомпонентные ссылки.

Второе - метод SetXXX обычно приватный и потомкам недоступен, а вот Loaded они могут перекрыть и сами настроить свое поведение. Гибкость, однако.


 
Vlad2   (2002-09-09 10:09) [9]

> Юрий Зотов
т.е. сделать так: Loaded; override; и, далее, в текте Loaded
begin
inherited;
...
[setting published value] ?
end;
а метод set у меня специально protected.
Однако,
1. В этом случае значение св-ва будет устанавливаться три раза: конструктор, .dfm, Loaded override.
2. "в Loaded уже разрешены межкомпонентные ссылки." - как то бы поподробнее, если можно.



 
Alex4444444444   (2002-09-09 13:20) [10]

A zachem voobshe ego delat" published, esli ego NE nuzhno sohranyat"? Pochemu ne prosto public?


 
Валерыч   (2002-09-10 03:06) [11]

Если не надо хранить в dfm значение published свойства, можно воспользоваться директивой stored в объявлении данного свойства



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

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

Наверх





Память: 0.47 MB
Время: 0.007 c
1-61210
Viktor Kushnir
2002-09-07 08:45
2002.09.19
Запись в файл


7-61334
GydruS
2002-07-09 03:17
2002.09.19
Программирование PIC-контроллера на шине i2c.


14-61288
denis911
2002-08-16 16:19
2002.09.19
Есть у кого компонет для просмотра dwg, cdr и пр. в D5, D6


3-61011
wed
2002-08-29 10:48
2002.09.19
Запрос: вывести одинаковые значения поля


1-61090
Сепрюк
2002-09-09 20:40
2002.09.19
Помогите новичку





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