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

Вниз

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

 
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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.025 c
1-1127712035
Ded_Matvey
2005-09-26 09:20
2005.10.16
меняется шрифт в перерисованой канве


2-1127123367
Wolferio
2005-09-19 13:49
2005.10.16
Как удалить файл


1-1127599349
dominik
2005-09-25 02:02
2005.10.16
Unicode


14-1127729663
Rouse_
2005-09-26 14:14
2005.10.16
SofTool 2005


14-1127681502
NewWonder
2005-09-26 00:51
2005.10.16
Посоветуйте плиз. модель принтера





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский