Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Невизуальные компоненты внутри другого невизуального компонента


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? Или что?


Наверх

Титульная страница Поиск, карта сайта Написать письмо