Сохранение TCollections в собственном компоненте

UkaUka
отредактировано 05:53 Раздел: FastReport 4.0
Я написал собственный компонент для FR, зарегестрировал его
все нормально. Работает.
Но теперь в него надо добавить свойство типа TCollections
Я добавил разобрася в редакторами свойств все нормально.
Но он у меня не сохраняется.
Вобщем я делал так:

Type
TMYParameters = Class(TCollections)

TfrxMyQuery = Class(TfrxCustomQuery)
Private
FMyQuery: TMyQuery;
procedure SetParams(Value: TMYParameters);
Function GetParams: TMYParameters;
procedure ReadData(Reader: TReader);
procedure WriteData(Writer: TWriter);
Protected
procedure DefineProperties(Filer: TFiler); override;
Published
Property MYParameters: TMYParameters Read GetParams Write SetParams;
End
.....
procedure TfrxIBSQuery.DefineProperties(Filer: TFiler);
Begin
Inherited;
Filer.DefineProperty('MYParameters', ReadData, WriteData, True);
End;
{
}

Procedure TfrxIBSQuery.ReadData(Reader: TReader);
Begin
frxReadCollection(FMyQuery.Parameters, Reader, Self);
End;
{
}

Procedure TfrxIBSQuery.WriteData(Writer: TWriter);
Begin
frxWriteCollection(FMyQuery.Parameters, Writer, Self);
End;
{
}

Function TfrxIBSQuery.GetParams: TMYParameters;
Begin
Result:= FQuery.Parameters;
End;
{
}

Procedure TfrxIBSQuery.SetParams(Value: TMYParameters);
Begin
FQuery.Parameters.Assign(Value);
End;
{
}

В чем я ошибся?
Как свойство сохранить?
ReadData у меня вообще ни разу не вызывается.

Жду...

Комментарии

  • UkaUka
    отредактировано 05:53
    Вообщем я разобрался:
    Сохраненяется в поток класс TfrxMyQuery
    происходит не непосредственно. Т.к. Он является
    наследником TfrxCustomQuery то сохраняется свойство
    FMyQuery: TMyQuery замапленное в свойство Component в предке.
    Т.е. сохранение свойства MYParameters не происходит вообще.
    Необходимо перекрывать непосредственно свойство у TMyQuery
    которое = Parameters
    т.е. ето выглядит так:
    Filer.DefineProperty('Parameters', ReadData, WriteData, True);

    Но в предке перекрыто свойство 'Parameters' поэтому пришлось
    немного причесать исходники самого FR :-)

    Вообщем работает.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.