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

Вниз

свойство типа 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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.021 c
14-4099
Anna
2003-09-09 12:27
2003.10.02
---|Ветка была без названия|---


1-3904
Jiura32d
2003-09-22 13:08
2003.10.02
Почему шрифт не сохраняется в запись?


3-3760
denis24
2003-09-11 19:29
2003.10.02
Преобразовать строку в дату


1-3872
krotik
2003-09-18 16:18
2003.10.02
opends60.dll или написание расширенных хранимых процедур


3-3704
Voland777
2003-09-15 10:22
2003.10.02
В переменную не запихнуть значение