Форум: "Начинающим";
Текущий архив: 2006.03.26;
Скачать: [xml.tar.bz2];
ВнизРедактор 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.04 c