Главная страница
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.48 MB
Время: 0.032 c
4-1125151602
Freez
2005-08-27 18:06
2005.10.30
Узнать имя текущего процесса


9-1118652184
@!!ex
2005-06-13 12:43
2005.10.30
OpenGL -> DirectX


3-1126997161
saNat
2005-09-18 02:46
2005.10.30
Программное создание БД Access


5-1093549702
Jetus
2004-08-26 23:48
2005.10.30
Выделение дней в календаре


8-1117651080
dan
2005-06-01 22:38
2005.10.30
Прокрутка в DSPack