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

Вниз

Свойство типа TStrings   Найти похожие ветки 

 
Anonimus ©   (2004-12-27 15:12) [0]

Добрый день.
Пишу свой компонент. Появилась необходимость вставить туда свойство типа TStrings. Свойство должно быть published. Но при попытке редактировать его в Design Time получаю ошибку. Естесственно, ведь экземпляр класса еще не создан.

 private
   { Private declarations }
   fLngFileName: string;
   fOtherStrings: TStrings;
   procedure ExtractComponents;
   procedure SetLng(FName: string);
 protected
   { Protected declarations }
 public
   { Public declarations }
 published
   { Published declarations }
   property LngFileName: string read fLngFileName write SetLng;
   property OtherStrings: TStrings read fOtherStrings;
 end;

Пожалуйста, ткните носом, как нужно делать, чтобы в результате получить какое-то подобие Lines в TMemo


 
prosoft   (2004-12-27 15:19) [1]

Свойство в свою очередь является ссылкой на экземпляр. Так что его как бы тоже создать нужно. ;)
Например так:

TMyComponent = class(TComponent)
.....
public
  { Public declarations }
  constructor Create(AOwner: TComponent); override;
  destructor Destroy; override;

published
  { Published declarations }
  property LngFileName: string read fLngFileName write SetLng;
  property OtherStrings: TStrings read fOtherStrings;
end;


constructor TMyComponent.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
fOtherStrings := TStringList.Create;
end;

destructor TMyComponent.Destroy;
begin
fOtherStrings.Free;
inherited Destroy;
end;



 
Anonimus ©   (2004-12-27 15:48) [2]

Я так понимаю Delphi в данной ситуации работает в качестве интерпритатора своего же кода, ну в некотором роде?
Сорри, яснее выразиться не сумел :(


 
Юрий Зотов ©   (2004-12-27 16:47) [3]

> Anonimus ©   (27.12.04 15:48) [2]

Нет, не интерпретатора, там более сложный механизм (больше похоже на механизм плагинов).

Еще - свойство OtherStrings: TStrings объявлено как "только для чтения". В таком случае зачем выносить его в Инспектор Объектов?


 
icWasya ©   (2005-01-11 11:27) [4]

>как нужно делать, чтобы в результате получить какое-то подобие Lines в TMemo
кроме [1] добавить


private
procedure  setOtherStrings(value :TStrings);
....
property OtherStrings: TStrings read fOtherStrings write setOtherStrings;

....
procedure  TMyComponent.setOtherStrings(value :TStrings);
begin
 fOtherStrings.Assign(value);
end;



 
Anatoly Podgoretsky ©   (2005-01-15 14:23) [5]

Anonimus ©   (27.12.04 15:12)  
Естесственно, ведь экземпляр класса еще не создан.

Экземпляр класса уже создан, иначе бы ты его не увидел в инспекторе объектов.



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

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

Наверх




Память: 0.47 MB
Время: 0.042 c
14-1128886489
Bogdan1024
2005-10-09 23:34
2005.10.30
КМП будет или нет?


2-1128627955
Молодой
2005-10-06 23:45
2005.10.30
MS Access&D7...... Ошибка - несовместимость типов...


5-1107759708
h010d
2005-02-07 10:01
2005.10.30
TreeView с колонками


3-1126877373
V.I.P.er
2005-09-16 17:29
2005.10.30
компонент TDBLookupComboBox без повторений


3-1127306103
Feos
2005-09-21 16:35
2005.10.30
Drag&Doc в DbGrid