Форум: "Основная";
Текущий архив: 2004.04.18;
Скачать: [xml.tar.bz2];
ВнизПорядок чтения 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.035 c