Форум: "Компоненты";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
ВнизСвойство типа 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.039 c