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

Вниз

Порядок чтения published свойств   Найти похожие ветки 

 
Mim   (2004-03-29 16:09) [0]

Привет. Как задать порядок чтения из ресурсов или dfm published свойств.
Например

tmydataset = class(tdataset)
...
published
 property tablename: string read ftablename write ftablename;
 property active;
end;

При чтении active вызывается setactive;
Так вот жутко хочется чтоб в при прихождении в setactive свойство ftablename было определено.

то есть свойство фсешму читалось опосля tablename;


 
Mim   (2004-03-29 16:11) [1]

Мда, отвратительно написал :(, извиняюсь.

ресурсов или dfm, published свойств.

то есть свойство active читалось опосля tablename;


 
Reindeer Moss Eater ©   (2004-03-29 16:13) [2]

Просто надо научиться проверять ComponentState при выполнении методов и не выполнять открытия если csLoading csReading etc


 
Reindeer Moss Eater ©   (2004-03-29 16:14) [3]

Либо тупо управлять чтением последовательностью обявления свойств


 
Mim   (2004-03-29 16:15) [4]

Почемуто у меня последвательность никак не влияет на это.


 
Reindeer Moss Eater ©   (2004-03-29 16:17) [5]

Потому что модуль компонента не перекомпилировал.


 
vuk ©   (2004-03-29 16:22) [6]

Еще до кучи стоит разобраться, зачем нужен метод Loaded.


 
Mim   (2004-03-29 16:33) [7]

vuk ©   (29.03.04 16:22) [6]

Спасибо. Loaded - то что нада :).

делаю так

procedure TCkgXMLDataSet.SetActive(Value: Boolean);
begin
 if csLoading in Componentstate then
   begin
     FLoadActive := Value;
     exit;
   end;
...
end;

procedure TCkgXMLDataSet.Loaded;
begin
 inherited;
 Active := FLoadActive;
end;


 
Mim   (2004-03-29 16:35) [8]

Reindeer Moss Eater ©   (29.03.04 16:17) [5]  

Думается тут дело в другом, или в следовании этих свойств внутри dfm файла, или в том что свойство active обьявлено в предке, или в прокладке между клавиатурой и монитором :). В любом случае проблемка решилась, спасибо за участие.


 
Юрий Зотов ©   (2004-03-29 16:49) [9]

> Mim   (29.03.04 16:35) [8]

Чтобы снять все вопросы. Свойства ЧИТАЮТСЯ в порядке их следования в DFM - то есть, в порядке записи. А ПИШУТСЯ они в таком порядке:
- сначала в порядке объявления в published (начиная с самого дальнего предка);
- затем в порядке следования в DefineProperties (если перекрыт).

Значит, в Вашем случае надо либо использовать Loaded, либо сделать Active свойством ПОТОМКА (добавив Get/Set) и объявить его ПОСЛЕ TableName. Еще вариант - добавить к Active атрибут stоred False и написать его сохранение в DefineProperties.


 
Mim   (2004-03-30 09:34) [10]

Юрий Зотов ©   (29.03.04 16:49) [9]

Большое спасибо. Приклоняюсь перед вашей эрудированостью.
(со всем уважением, так сказать :) )



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

Текущий архив: 2004.04.18;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
3-1080102227
Oldster
2004-03-24 07:23
2004.04.18
Информация о базе данных


1-1080459979
Neep
2004-03-28 11:46
2004.04.18
Помогите разобраться с CallBack


1-1080699443
Zakalibit
2004-03-31 06:17
2004.04.18
Синхронизация VCL с другими потоками


1-1080719895
som
2004-03-31 11:58
2004.04.18
Поиск в ComboBox


14-1079974143
Обитатель
2004-03-22 19:49
2004.04.18
Сайту "Мастера Делфи" нужна Ваша поддержка