Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.01 c
1-3905
webpauk
2003-09-22 13:02
2003.10.02
Изменение св-в компонента


14-4101
Омлет
2003-09-14 09:24
2003.10.02
Именинники 14 сентября !


14-4063
usdl
2003-09-14 11:24
2003.10.02
ВСЕМ,кто пишет программы самостоятельно, предлагаю объединиться.


1-3968
Yozch1
2003-09-19 18:33
2003.10.02
присвоение функции по OnClick в реальном времени.


9-3700
Agent[007]
2003-03-26 17:58
2003.10.02
Какое событие?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский