Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > List index out of bounds (0) при поиске компонента


Автор: mr.Anderson 23.9.2006, 12:50
Так-с.

На форме есть компонент TPageControl под именем Note с одной вкладкой.
На этой вкладке расположены объекты (ну, вообще-то один объект, но это не суть важно).
Объект этот - TRichEdit с именем Rich.

Мне нужно обнаружить этот объект и что-то сделать с ним.
Пишу следующее:
Код

//имя процедуры (клик по кнопке), затем
var
 i: Byte;
begin

 WITH Note DO
  for i:=0 to ActivePage.ComponentCount-1 do
   if( ActivePage.Components[ i ].Name = 'Rich' ) then
    TRichEdit( ActivePage.Components[ i ] ).Undo();

end;

Но! При срабатывании этой функции я получаю ошибку:
Цитата

List index out of bounds (0)

Ну, т.е. типа компонента с таким номером нет и быть не может. Пробовал ставить в номер компонента 1, хотя этои глупость, получал ту же картину.

Где я ошибся?

Автор: December 23.9.2006, 13:13
Попробуй вот тут
i: Byte;
использовать тип, который может хранить отрицательные значения, например, интегер smile

Добавлено @ 13:19 
а вот тебе хинт номер 2:
showmessage(Rich.Owner.Name);

Автор: VAngeL86 23.9.2006, 13:40
Rich "принадлежит" форме а не Note.ActiveSheet-у ...если сделать так
Код

var
 i: Byte;
begin
 Rich.Create(Note.ActiveSheet);
 WITH Note DO
  for i:=0 to ActivePage.ComponentCount-1 do
   if( ActivePage.Components[ i ].Name = 'Rich' ) then
    TRichEdit( ActivePage.Components[ i ] ).Undo();

код выполняется...хотя 2 раза данный код не пойдёт.... 
Нужно как то добиться чтобы у Rich Owners был TabSheet... лично я не знаю как!

Автор: mr.Anderson 23.9.2006, 13:57
December, благодарю за подсказки! Все получилось убиранием With и заменой Component на Control...
От меня + в репку. smile

Автор: Matematik 23.9.2006, 16:51
Не используй byte для цикла.

Автор: mr.Anderson 23.9.2006, 19:41
Matematik, я уже понял. smile Заменил его на ShortInt.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)