Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Компоненты";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Вниз

Коллекция после запуска пустая   Найти похожие ветки 

 
Anatoly ©   (2004-12-15 19:45) [0]

В designTime заполняю коллекцию элементами, а после запуска она оказывается пустой. Подскажите, пожалуйста, в чем дело. Кстати, если закрыть и открыть Delphi, то она опустошается и в DesignTime.


 
Юрий Зотов ©   (2004-12-16 00:26) [1]

Ответ простой - коллекция не сохраняется в DFM. А почему - это без кода не скажешь.


 
Anatoly ©   (2004-12-16 11:12) [2]

Вот код:

 TQueryCollectionItem = class(TCollectionItem)
 private
   FQuery: TQuery;
   FMasterQuery: TQuery;
   FPK_FieldName: string;
   FFK_MasterFieldName: string;
   FQueryCaption: string;
   procedure SetQuery(const Value: TQuery);
   procedure SetMasterQuery(const Value: TQuery);
   procedure SetFK_MasterFieldName(const Value: string);
   procedure SetPK_FieldName(const Value: string);
   procedure SetQueryCaption(const Value: string);
 protected
   function GetDisplayName: string; override;
 published
   property Query: TQuery read FQuery write SetQuery;
   property QueryCaption: string read FQueryCaption write SetQueryCaption;
   property MasterQuery: TQuery read FMasterQuery write SetMasterQuery;
   property PK_FieldName: string read FPK_FieldName write SetPK_FieldName;
   property FK_MasterFieldName: string read FFK_MasterFieldName write SetFK_MasterFieldName;
 public
   (*
             type
          TDriverNameProperty = class(TDBStringProperty)
          public
            procedure GetValueList(List: TStrings); override;
          end;

         procedure TDriverNameProperty.GetValueList(List: TStrings);
         begin
          (GetComponent(0) as TDatabase).Session.GetDriverNames(List);
         end;

         ...

         RegisterPropertyEditor(TypeInfo(string), TDatabase, "DriverName", TDriverNameProperty);
   *)
 end;

 TQueryCollection = class (TCollection)
 private
   FOwner: TPersistent;
   function GetItem(Index: Integer): TQueryCollectionItem;
   procedure SetItem(Index: Integer; Value: TQueryCollectionItem);
 protected
   function GetOwner: TPersistent; override;
   procedure Added(var Item: TCollectionItem); override;
 public
   constructor Create(Owner: TPersistent);
   function Add: TQueryCollectionItem;
   property Items[Index: Integer]: TQueryCollectionItem read GetItem write SetItem stored True; default;
 end;

 THReport =  class (TComponent)
 ...
   FQueryList: TQueryCollection;

 
   constructor Create(AOwner: TComponent); override;

 ...
  end;

...

constructor THReport.Create(AOwner: TComponent);
begin
...
 FQueryList := TQueryCollection.Create(self);
end;

{ TQueryCollection }

function TQueryCollection.Add: TQueryCollectionItem;
begin
 Result := TQueryCollectionItem(inherited Add);
end;

procedure TQueryCollection.Added(var Item: TCollectionItem);
begin
 inherited Added(Item);

end;

constructor TQueryCollection.Create(Owner: TPersistent);
begin
 FOwner := Owner;
 inherited Create(TQueryCollectionItem);
end;

function TQueryCollection.GetItem(Index: Integer): TQueryCollectionItem;
begin
 Result := TQueryCollectionItem(inherited GetItem(Index));
end;

function TQueryCollection.GetOwner: TPersistent;
begin
 Result := FOwner;
end;

procedure TQueryCollection.SetItem(Index: Integer;
 Value: TQueryCollectionItem);
begin
 inherited SetItem(Index, TCollectionItem(Value));
end;

{ TQueryCollectionItem }

function TQueryCollectionItem.GetDisplayName: string;
begin
 if FQuery <> nil then
 begin
   result := FQuery.Name;
   if FQueryCaption <> "" then
     result := FQueryCaption + "(" + result + ")";
 end
 else
   result := inherited GetDisplayName;
end;

procedure TQueryCollectionItem.SetFK_MasterFieldName(const Value: string);
begin
 FFK_MasterFieldName := Value;
end;

procedure TQueryCollectionItem.SetMasterQuery(const Value: TQuery);
begin
 FMasterQuery := Value;
end;

procedure TQueryCollectionItem.SetPK_FieldName(const Value: string);
begin
 FPK_FieldName := Value;
end;

procedure TQueryCollectionItem.SetQuery(const Value: TQuery);
begin
 FQuery := Value;
end;

procedure TQueryCollectionItem.SetQueryCaption(const Value: string);
begin
 FQueryCaption := Value;
end;



 
Pentium133 ©   (2004-12-16 16:24) [3]

используй  TQueryCollection = class (TOwnedCollection)


 
Anatoly ©   (2004-12-16 16:55) [4]

Спасибо, все получилось



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

Форум: "Компоненты";
Текущий архив: 2005.10.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.034 c
1-1127387729
nastya
2005-09-22 15:15
2005.10.16
Наследование и виртуальные функции


2-1126642440
markon
2005-09-14 00:14
2005.10.16
Вызов функции, написанной в одном модуле из другого модуля


2-1127035145
ShotGuN
2005-09-18 13:19
2005.10.16
Как присвоить OnClick свою процедуру?


14-1124987974
TG
2005-08-25 20:39
2005.10.16
АНИМАЦИЯ


1-1127600969
Леха
2005-09-25 02:29
2005.10.16
Таблица StringGrid





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский