![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Что вызывается первее - DefineProperties или published ?
GuAV © (2005-10-07 23:33:00)
jack128 (2005-10-08 01:46:00) [1]GuAV © (08.10.05 0:34) [5]
И лучше не полагаться на этот порядок.
ну в исходниках vcl, насколько я помню есть моменты, где разработчики закладываются на то что свойства будут записаны в дфм в том порядке, в каком они были опубликованы..
GuAV (2005-10-08 00:34:00) [2]Всё, разобрался/вспомнил. Прочитано будет в том же порядке что и записано, записано, как видно из [2], сначала в порядке следования в typeinfo published-свойства (в порядке от предка к наследнику), затем свойсва из defineproperties. И лучше не полагаться на этот порядок.
GuAV (2005-10-08 00:12:00) [3]jack128 © (08.10.05 0:06) [2]
Понял. Спасибо.
Чего-то вылетело из головы, что можно посмотреть исходники :-(
GuAV (2005-10-08 00:09:00) [4]При чтении из потока и записи в поток наследника TPeristent автоматически читаются/записываются все published свойства; также вызывается DefineProperties для записи/чтения свойств "вручную".
Известен ли порядок этих двух действий при чтении, и если да, то в каком порядке они происходят ?
jack128 (2005-10-08 00:06:00) [5]
procedure TWriter.WriteProperties(Instance: TPersistent);
var
I, Count: Integer;
PropInfo: PPropInfo;
PropList: PPropList;
begin
Count := GetTypeData(Instance.ClassInfo)^.PropCount;
if Count > 0 then
begin
GetMem(PropList, Count * SizeOf(Pointer));
try
GetPropInfos(Instance.ClassInfo, PropList);
for I := 0 to Count - 1 do
begin
PropInfo := PropList^[I];
if PropInfo = nil then
Break;
if IsStoredProp(Instance, PropInfo) then
WriteProperty(Instance, PropInfo);
end;
finally
FreeMem(PropList, Count * SizeOf(Pointer));
end;
end;
Instance.DefineProperties(Self);
end;
Anatoly Podgoretsky (2005-10-07 23:51:00) [6]Непонял