![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Невизуальные компоненты внутри другого невизуального компонента
Deep © (2004-12-14 21:00:00)сделал сабж,
проблема в том, что не сохраняются свойства вложенных невизуальных компонентов выставленные в дизайнере. Т.е. авыставил свойства, сохранил, вышел. Захожу - свойства имеют значения по умолчанию.
Юрий Зотов (2004-12-15 11:33:00) [1]> DiamondShark © (14.12.04 22:40) [7]
Разруливается через DefineProperties.
vuk (2004-12-14 22:44:00) [2]В 5-ке, можно попробовать ручками сохранять свойства в бинарный поток. Потом ручками же и загружать.
DiamondShark (2004-12-14 22:40:00) [3]Посмотрел в 5 реализацию TReader/TWriter.
Жестко прописано по типам свойств: если TComponent -- писать ссылку (путь).
Абыдна, да.
vuk (2004-12-14 21:35:00) [4]to DiamondShark © (14.12.04 21:31) [4]:
>Хм... А это для какой версии?
>В 5 такого нету.
С 6-ки начиная.
Deep (2004-12-14 21:33:00) [5]>>>vuk ©
сенкс, сделал. работает. :))
constructor TdbxDataSource.Create(AOwner: TComponent);
begin
inherited;
FSQLDataSet := TSQLDataSet.Create(self);
FSQLDataSet.Name := 'SQLDataSet';
FSQLDataSet.SetSubComponent(true);
FDataSetProvider := TDataSetProvider.Create(self);
FDataSetProvider.DataSet := SQLDataSet;
FDataSetProvider.Name := 'DataSetProvider';
FDataSetProvider.SetSubComponent(true);
FClientDataSet := TClientDataSet.Create(self);
FClientDataSet.Name := 'ClientDataSet';
FClientDataSet.ProviderName := FDataSetProvider.Name;
FClientDataSet.SetSubComponent(true);
//настроим наш DataSource
Dataset := ClientDataSet;
end;
DiamondShark (2004-12-14 21:31:00) [6]
> vuk © (14.12.04 21:27) [3]
Хм... А это для какой версии?
В 5 такого нету.
vuk (2004-12-14 21:27:00) [7]Чтобы свойства сохранялись, для всех вложенных компонентов нужно вызывать SetSubComponent(true)
Deep (2004-12-14 21:15:00) [8]TdbxDataSource = class(TDataSource)
private
{ Private declarations }
FClientDataSet: TClientDataSet;
FDataSetProvider: TDataSetProvider;
FSQLDataSet: TSQLDataSet;
//procedure SetClientDataSet(Value: TClientDataSet);
//procedure SetDataSetProvider(Value: TDataSetProvider);
//procedure SetSQLDataSet(Value: TSQLDataSet);
protected
{ Protected declarations }
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
{ Published declarations }
property ClientDataSet: TClientDataSet read FClientDataSet;// write SetClientDataSet;
property DataSetProvider: TDataSetProvider read FDataSetProvider; // write SetDataSetProvider;
property SQLDataSet: TSQLDataSet read FSQLDataSet; // write SetSQLDataSet;
end;
constructor TdbxDataSource.Create(AOwner: TComponent);
begin
inherited;
FSQLDataSet := TSQLDataSet.Create(self);
FSQLDataSet.Name := 'SQLDataSet';
FDataSetProvider := TDataSetProvider.Create(self);
FDataSetProvider.DataSet := SQLDataSet;
FDataSetProvider.Name := 'DataSetProvider';
FClientDataSet := TClientDataSet.Create(self);
FClientDataSet.Name := 'ClientDataSet';
FClientDataSet.ProviderName := FDataSetProvider.Name;
//настроим наш DataSource
Dataset := ClientDataSet;
end;
destructor TdbxDataSource.Destroy;
begin
if FClientDataSet.Active then
FClientDataSet.Close;
FClientDataSet.Free;
FDataSetProvider.Free;
FSQLDataSet.Free;
inherited;
end;
vuk (2004-12-14 21:08:00) [9]Вложенные каким образом? SetSubComponent? Или что?