Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.16;
Скачать: CL | DM;

Вниз

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

 
Deep ©   (2004-12-14 21:00) [0]

сделал сабж,
проблема в том, что не сохраняются свойства вложенных невизуальных компонентов выставленные в дизайнере. Т.е. авыставил свойства, сохранил, вышел. Захожу - свойства имеют значения по умолчанию.


 
vuk ©   (2004-12-14 21:08) [1]

Вложенные каким образом? SetSubComponent? Или что?


 
Deep ©   (2004-12-14 21:15) [2]

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:27) [3]

Чтобы свойства сохранялись, для всех вложенных компонентов нужно вызывать SetSubComponent(true)


 
DiamondShark ©   (2004-12-14 21:31) [4]


> vuk ©   (14.12.04 21:27) [3]

Хм... А это для какой версии?
В 5 такого нету.


 
Deep ©   (2004-12-14 21:33) [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;


 
vuk ©   (2004-12-14 21:35) [6]

to DiamondShark ©   (14.12.04 21:31) [4]:
>Хм... А это для какой версии?
>В 5 такого нету.
С 6-ки начиная.


 
DiamondShark ©   (2004-12-14 22:40) [7]

Посмотрел в 5 реализацию TReader/TWriter.
Жестко прописано по типам свойств: если TComponent -- писать ссылку (путь).
Абыдна, да.


 
vuk ©   (2004-12-14 22:44) [8]

В 5-ке, можно попробовать ручками сохранять свойства в бинарный поток. Потом ручками же и загружать.


 
Юрий Зотов ©   (2004-12-15 11:33) [9]

> DiamondShark ©   (14.12.04 22:40) [7]

Разруливается через DefineProperties.



Страницы: 1 вся ветка

Текущий архив: 2005.10.16;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.049 c
4-1124183268
volser
2005-08-16 13:07
2005.10.16
Изменение рабочего стола


3-1125374795
novikova
2005-08-30 08:06
2005.10.16
ado в локальной сети


2-1126978754
Курсант
2005-09-17 21:39
2005.10.16
Table


4-1124264334
Shopot
2005-08-17 11:38
2005.10.16
Как конвертировать WideChar to Char?


1-1127876176
Bigman
2005-09-28 06:56
2005.10.16
Как перенести Код из Visual Basic в Delphi?