Форум: "Основная";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];
Внизсвойство типа TStrings... Найти похожие ветки
← →
First_May (2003-09-22 11:22) [0]Здравствуйте, пишу компонент, у которго есть свойство:
published
property NotEvChange: TStrings read FNotEvChange write SetNotEvChange;
В инспекторе объектов заполняю этот список. Вопрос состоит в том, что внутри компонента этот список почему то пустой?
← →
Skier (2003-09-22 11:24) [1]Хорошо бы увидеть код SetNotEvChange
← →
First_May (2003-09-22 11:31) [2]Вот:
procedure TEventComp.SetNotEvChange(Value: TStrings);
begin
FNotEvChange.Assign(Value);
end;
А в конструкторе:
FNotEvChange:=TStringList.Create;
← →
Skier (2003-09-22 11:34) [3]Хм...всё вроде правильно...
> Вопрос состоит в том, что внутри компонента этот список
> почему то пустой?
Почему пустой ? Доказательства ! :)
← →
First_May (2003-09-22 11:45) [4]в таком цикле:
for i:=0 to Self.Owner.ComponentCount-1 do
if (Self.Owner.Components[i] is TWinControl) and
(FNotEvChange.IndexOf(Self.Owner.Components[i].Name)=-1)then
begin
...
значение FNotEvChange.Count=0
← →
Skier (2003-09-22 11:49) [5]???
> значение FNotEvChange.Count=0
А где в твоём коде FNotEvChange.Count ?
← →
First_May (2003-09-22 11:56) [6]я в дебагере смотрю, да и в любом случае FNotEvChange.IndexOf(Self.Owner.Components[i].Name)=-1.
← →
HolACost! (2003-09-22 11:56) [7]IMHO, в листе не то. что ищешь!
← →
Skier (2003-09-22 12:02) [8]
> FNotEvChange.IndexOf(Self.Owner.Components[i].Name)=-1.
-Это значит только то что в FNotEvChange нет строки Self.Owner.Components[i].Name
-пробуй ShowMessage(IntToStr(FNotEvChange.Count))
← →
First_May (2003-09-22 12:03) [9]ищу то, что нужно :) даже вот так пишу:
Tag:=FNotEvChange.Count;
for i:=0 to Self.Owner.ComponentCount-1 do
...
все равно Tag=0!!!
← →
Skier (2003-09-22 12:11) [10]
> все равно Tag=0!!!
OK.
> procedure TEventComp.SetNotEvChange(Value: TStrings);
> begin
> FNotEvChange.Assign(Value);
> end;
В Value что получаешь ?
← →
First_May (2003-09-22 12:11) [11]То Skier © (22.09.03 12:02) [8]
FNotEvChange.Count=0 только старте программы, если же потом я делаю какие то изменения в компоненте, то FNotEvChange.Count показывает реальное значение...
← →
HolACost! (2003-09-22 12:13) [12]А если в рунтайм заполнить этот список? Попробуй!
А вообще - попой чувствую, что тут дело в том, что пытаешься найти - просто нет этого в листе! А вот тесты просто могут быть несостоятельны из-за коакой-либо оптимизации!
← →
First_May (2003-09-22 12:13) [13]я туда не могу попасть!!! :)
← →
Skier (2003-09-22 12:15) [14]
> FNotEvChange.Count=0 только старте программы
если design-time интересует, то смотри метод Loaded
← →
First_May (2003-09-22 12:21) [15]в рунтайме все нормально, про Loaded знаю, но как в нем заставить список заполниться? Есть ли где нибудь примеры похожей задачи?
← →
Skier (2003-09-22 12:25) [16]
> , но как в нем заставить список заполниться?
Зачем он прочтётся (если там что-то было на момент записи) из файла-
ресурса формы.
← →
First_May (2003-09-22 12:31) [17]у меня вот так реализовано:
procedure TEventComp.Loaded;
var Loading: boolean;
begin
Loading:=csLoading in ComponentState;
inherited Loaded;
if not (csDesigning in ComponentState) then
begin
if Loading then
begin
FFlag:=1;
if FEvChangeTmp then SetEvChange(FEvChangeTmp);
end;
end else FEvChange:=FEvChangeTmp;
end;
← →
Skier (2003-09-22 12:36) [18]Что это ?!
← →
First_May (2003-09-22 12:42) [19]метод Loaded, а что то здесь не так?
← →
Skier (2003-09-22 12:44) [20]Проверяй FNotEvChange и всё ...
← →
First_May (2003-09-22 12:50) [21]а в стандартных компонентах, типа TListBox, Items реализованы совсем по другому, может быть надо делать так как там?
← →
Skier (2003-09-22 12:52) [22]
> а в стандартных компонентах, типа TListBox, Items реализованы
> совсем по другому,
То есть "по-другому" ?
← →
HolACost! (2003-09-22 12:54) [23]У меня глупое предложение - давай исходник этого компонента! Потрясём его за все окончания и посмотрим, что в нём не так как надо!
← →
First_May (2003-09-22 12:55) [24]То Skier © (22.09.03 12:52) [22]
ну там вводится какой то доподнительный класс, и через него это все реализовано. Ну а с методом Loaded что то не так? Почему ты так удивился?
← →
Skier (2003-09-22 13:00) [25]
> ну там вводится какой то доподнительный класс, и через него
> это все реализовано
"Дополнительный" класс у тебя это TStringList, с ним ты и работаешь,
если бы ты работал с TStrings, то он бы тебя укусил.
> Почему ты так удивился?
Потому что не понял зачем ты это всё понаписал...
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.02;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.009 c