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

Вниз

Редактор TStrings в Design-Time   Найти похожие ветки 

 
mfender ©   (2006-03-11 07:03) [0]


private
 FSQLSelect: TStrings;
 procedure SetSelectQuery(Value: TStrings);
published
 property SQLSelect:TStrings read FSQLSelect write SetSelectQuery;

implementation

procedure SetSelectQuery(Value: TStrings);
begin
 FSQLSelect.Assign(Value);
end;


Уже всю голову сломал... Ну не включается String List Editor. А вместо него - Сannot assign a nil to a TRichEditStrings какой-то...
Как с этим бороться. Уже смотрел, как в других компонентах это делается. Может я чего-то не вижу?


 
Юрий Зотов ©   (2006-03-11 10:10) [1]

1. Покажите конструктор и деструктор.
2. Если в SetSelectQuery передается Value=nil, то так и должно быть. Ассигновать nil действительно нельзя.


 
Loginov Dmitry ©   (2006-03-11 12:49) [2]

1) Почему в реализации вашей функции не указан тип класса?
2) Попробуйте заменить TStrings на TStringList (тогда точно заработает)


 
Гаврила ©   (2006-03-11 13:51) [3]


> Loginov Dmitry ©  

нет.
Весь вопрос в том, что именно было фактически создано (и было ли - похоже, что нет)


 
mfender ©   (2006-03-11 13:55) [4]


 TmfTreeView = class(TTreeView)
 private
   FSQLSelect: TStringList;
 published
   constructor Create(AOwner: TComponent);override;
   property SQLSelect:TStringList read FSQLSelect write SetSelectQuery;
 end;

implementation

constructor TmfTreeView.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
end;

procedure TmfTreeView.SetSelectQuery(Value: TStringList);
begin
 FSQLSelect.Assign(Value);
end;


Вот уже и TStringList попробовал - не помогает.
To Юрий Зотов ©   (11.03.06 10:10) [1]:
Когда я попробовал добавить в конструктор SQLSelect := TStringList.Create; в ответ получил Access Violation. Пробовал добавить туда пустую строку. Тоже не работает...


 
Гаврила ©   (2006-03-11 14:03) [5]


> Когда я попробовал добавить в конструктор SQLSelect :=
> TStringList.Create

FSQLSelect := TStringList.Create;
почему FSQLSelect - в притивном случае ты обращаешься к свойству, то есть вызываеття метод SetSelectQuery
а внутренний объект  FSQLSelect у тебя не создан.
Вообще объекты (а TStrings - это объект) надо создавать и разрушать руками, автоматически это не делается.
(и не забыть разрушить в деструкторе)


 
mfender ©   (2006-03-11 15:23) [6]

Гаврила ©   (11.03.06 14:03) [5]
почему FSQLSelect - в притивном случае ты обращаешься к свойству, то есть вызываеття метод SetSelectQuery


Ну конечно! Как я сразу не догадался!

constructor TmfTreeView.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 FSQLSelect := TStringList.Create;
end;

procedure TmfTreeView.SetSelectQuery(Value: TStringList);
begin
 if Value = nil then Value.Add("");
 FSQLSelect.Assign(Value);
end;


Так всё работает. Спасибо всем за участие!


 
Loginov Dmitry ©   (2006-03-11 20:04) [7]

А к чему такая проверка, если не секрет?

> if Value = nil then Value.Add("");


 
jack128 ©   (2006-03-11 21:38) [8]

Loginov Dmitry ©   (11.03.06 20:04) [7]
что бы когда nil придет в метод - AV получить.


 
Loginov Dmitry ©   (2006-03-12 10:24) [9]


> что бы когда nil придет в метод - AV получить.


А с чего это вдруг в метод придет nil? Не передавать nil в метод - и все будет в порядке.



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

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

Наверх




Память: 0.49 MB
Время: 0.04 c
2-1141997654
MC_GMC
2006-03-10 16:34
2006.03.26
Размещение файла в оперативке


2-1141988262
Der Nechk@ssoff
2006-03-10 13:57
2006.03.26
Реакция на открытие папки


2-1141737250
Barsky
2006-03-07 16:14
2006.03.26
Как обратиться к memo созданнуму в рантайме?


2-1141906952
Barsky
2006-03-09 15:22
2006.03.26
Форма поверх всех окон.


15-1141374871
Black_phoenix
2006-03-03 11:34
2006.03.26
Удалёная установка программ