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

Вниз

Загрузка компонента   Найти похожие ветки 

 
dima_shapkin ©   (2004-03-11 14:39) [0]

Такой вопрос...
Есть некокое свойство компонента вынесенное в published, являющимся потомком TPersistent. В нем определено поле типа TStringList, допустим F1 и в кострукторе - F1.add("Это классный компонент!")... это для начальной инициализации. Так вот в чем проблема, если изменить значение F1 в Object Inspеctor"е на любое другое отличное от пустого, то как бы все замечательно при загрузке компонента из потока оно становится тем, что указано в инспекторе в режиме дизайна. Но если оно пустое то при загрузке компонента как бы есенно ничего не меняется и остается, то что создано в конструкторе. А как бы узнать есть ли такое свойство в DFM? Постотрев DFM видно что при пустом значении пропадает строчка которая хранит значение F1.Text...


 
Reindeer Moss Eater ©   (2004-03-11 14:41) [1]

nodeafult


 
Алхимик ©   (2004-03-11 14:42) [2]

Ну так зачем в DFM хранить пустую строчку?


 
Reindeer Moss Eater ©   (2004-03-11 14:43) [3]

Хотя нет, это только для ordinal types


 
Reindeer Moss Eater ©   (2004-03-11 14:48) [4]

В нем определено поле типа TStringList, допустим F1 и в кострукторе - F1.add("Это классный компонент!")... это для начальной инициализации.

А зачем?
Если комонент на форме (в DFM), то у него будет вызван loaded.
Если его на форме нет, и он создается в рантайме - инициализируй список после вызова конструктора.


 
dima_shapkin ©   (2004-03-11 15:00) [5]

Бррр...
В конструкторе инициализация параметра и в любом случае она будет, кинули ли компонент на форму или создали в рантайме...
Вопрос то в чем, если он пустой, то остается тот что инициализируется в конструкторе...


 
Reindeer Moss Eater ©   (2004-03-11 15:02) [6]

Ты мне скажи, зачем в конструктое инициализировать свойство, для которого неприменимы директивы default и nodefault????


 
Reindeer Moss Eater ©   (2004-03-11 15:04) [7]

Если csDesigning in ComponentState инициализируй.
Если нет - не инициализируй.
Вот и все дела


 
Юрий Зотов ©   (2004-03-11 15:04) [8]

Либо в объявлении свойства добавьте stored True, либо перенесите F1.add("Это классный компонент!") из конструктора в Loaded.


 
Reindeer Moss Eater ©   (2004-03-11 15:08) [9]

If a property has no stored directive, it is treated as if stored True were specified.

То есть это и так уже есть по умолчанию


 
Юрий Зотов ©   (2004-03-11 15:43) [10]

> Reindeer Moss Eater ©   (11.03.04 15:08) [9]

1. Если stored не определено в предке.
2. Реальный способ сохранения зависит от того, как определен DefineProperties в предке. А у TStrings там сидит процедура DoWrite.


 
Reindeer Moss Eater ©   (2004-03-11 15:51) [11]

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


 
dima_shapkin ©   (2004-03-11 16:14) [12]

Короче кто кого не догоняет, прошу еще слова...

Есть некий компонет и у его есть свойство
published
property Title : TChartTitle read FChartTitle write SetChartTitle;
где TChartTitle = class(TPersistent) у которого в конструкторе...
constructor TChartTitle.Create(Chart : TChartLineEasy);
begin
inherited Create;
FTitle.Add("TChartLineEasy");
...
то есть инициализируем поле FTitle, чтобы было некокое значение при создании компонента. Вот так в чем загвоздка, если в дизайн-тайме это значение менять в инспекторе, то при загрузги компонента из потока ему будут присвоено то значение, которое указано в инспекторе. Но если оно пустое то изменяться оно не будет и поэтому останется то, которое присвоено в конструкторе. Как обойти это?


 
Reindeer Moss Eater ©   (2004-03-11 16:19) [13]

Ты читал вообще что тебе тут рассказали?


 
dima_shapkin ©   (2004-03-11 16:27) [14]

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


 
Reindeer Moss Eater ©   (2004-03-11 16:30) [15]

Седьмой пост читал?


 
Юрий Зотов ©   (2004-03-11 16:37) [16]

> dima_shapkin ©   (11.03.04 16:27) [14]

Уточните:
- реализацию метода SetChartTitle в компоненте;
- объявление свойства Title в TChartTitle (и методы Get/Set для него, если таковые имеются);
- есть ли в TChartTitle методы Assign и DefineProperties (и, если есть, их реализацию).



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

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

Наверх





Память: 0.48 MB
Время: 0.038 c
1-1078492564
Samtron
2004-03-05 16:16
2004.03.28
GetFileType


3-1077199046
}|{yk
2004-02-19 16:57
2004.03.28
Никто не подскажет, в чем здесь логическая ошибка?


1-1078382508
fatal
2004-03-04 09:41
2004.03.28
правила создания RC-файла


14-1077981348
TButton
2004-02-28 18:15
2004.03.28
TServerSocket+TClientSocket


6-1074236639
Vorobyev Sergey
2004-01-16 10:03
2004.03.28
Доступ к папке на Win2000 из Win98 под другим пользователем?





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