rtti controls: implemented streaming Link.AliasValues

git-svn-id: trunk@11773 -
This commit is contained in:
mattias 2007-08-10 08:15:02 +00:00
parent 4c6912f05a
commit ac47999c2d
2 changed files with 69 additions and 20 deletions

View File

@ -14,26 +14,6 @@
<Title Value="exampleprojectgrid1"/>
<ActiveEditorIndexAtStart Value="0"/>
</General>
<Units Count="2">
<Unit0>
<Filename Value="exampleprojectgrid1.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ExampleProjectGrid1"/>
<UsageCount Value="23"/>
</Unit0>
<Unit1>
<CursorPos X="24" Y="28"/>
<EditorIndex Value="0"/>
<Filename Value="examplegrid1.pas"/>
<ComponentName Value="Form1"/>
<IsPartOfProject Value="True"/>
<Loaded Value="True"/>
<ResourceFilename Value="examplegrid1.lrs"/>
<TopLine Value="1"/>
<UnitName Value="ExampleGrid1"/>
<UsageCount Value="23"/>
</Unit1>
</Units>
<PublishOptions>
<Version Value="2"/>
<IgnoreBinaries Value="False"/>
@ -55,6 +35,26 @@
<PackageName Value="LCL"/>
</Item2>
</RequiredPackages>
<Units Count="2">
<Unit0>
<Filename Value="exampleprojectgrid1.lpr"/>
<IsPartOfProject Value="True"/>
<UnitName Value="ExampleProjectGrid1"/>
<UsageCount Value="26"/>
</Unit0>
<Unit1>
<Filename Value="examplegrid1.pas"/>
<ComponentName Value="Form1"/>
<IsPartOfProject Value="True"/>
<ResourceFilename Value="examplegrid1.lrs"/>
<UnitName Value="ExampleGrid1"/>
<CursorPos X="12" Y="65"/>
<TopLine Value="42"/>
<EditorIndex Value="0"/>
<UsageCount Value="26"/>
<Loaded Value="True"/>
</Unit1>
</Units>
</ProjectOptions>
<CompilerOptions>
<Version Value="5"/>

View File

@ -193,6 +193,11 @@ Type
{ TPropertyLink }
TPropertyLink = class(TCustomPropertyLink)
private
procedure ReadAliasValuesData(Reader: TReader);
procedure WriteAliasValuesData(Writer: TWriter);
protected
procedure DefineProperties(Filer: TFiler); override;
published
property AliasValues;
property Options;
@ -3993,6 +3998,50 @@ begin
FLink.EditingDone;
end;
{ TPropertyLink }
procedure TPropertyLink.ReadAliasValuesData(Reader: TReader);
begin
Reader.ReadListBegin;
AliasValues.BeginUpdate;
try
AliasValues.Clear;
while not Reader.EndOfList do
AliasValues.Add(Reader.ReadString);
finally
AliasValues.EndUpdate;
end;
Reader.ReadListEnd;
end;
procedure TPropertyLink.WriteAliasValuesData(Writer: TWriter);
var
i: Integer;
begin
Writer.WriteListBegin;
for i := 0 to AliasValues.Count - 1 do
Writer.WriteString(AliasValues[i]);
Writer.WriteListEnd;
end;
procedure TPropertyLink.DefineProperties(Filer: TFiler);
var
HasAliasValuesData: Boolean;
AncestorPropList: TCustomPropertyLink;
begin
inherited DefineProperties(Filer);
HasAliasValuesData := AliasValues.Count > 0;
if Assigned(Filer.Ancestor) then begin
// Only serialize if string list is different from ancestor
if Filer.Ancestor.InheritsFrom(TCustomPropertyLink) then begin
AncestorPropList:=TCustomPropertyLink(Filer.Ancestor);
HasAliasValuesData := not AliasValues.Equals(AncestorPropList.AliasValues);
end;
end;
Filer.DefineProperty('AliasValuesStrings',
@ReadAliasValuesData, @WriteAliasValuesData, HasAliasValuesData);
end;
initialization
{$I rttictrls.lrs}
// TPropertyLink