Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.01.2011, 03:01   #1
AJlEKCA
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 17
Печаль Видимость страниц PageControl

здрасти. ситуация такая - программный продукт с модальной формой авторизации, после нее открывается основная форма. на ней расположен PageControl. надо в зависимости от того кто авторизовался делать видимыми определенные вкладки. в обработчик события OnShow главной формы написала код для проверки
Код:
if FMain.CBUser.ItemIndex=1 then
 begin
 TS5.TabVisible:=False;
 TS6.TabVisible:=False;
 TS7.TabVisible:=False;
 TS8.TabVisible:=False;
 end
 else
 if FMain.CBUser.ItemIndex=0 then
 begin
   TS1.TabVisible:=False;
   TS2.TabVisible:=False;
   TS3.TabVisible:=False;
   TS4.TabVisible:=False;
 end;
форма нормально открывается, но стоит попытаться перейти на другую страницу как вылетает сообщение с текстом
Цитата:
List index out of bounds (9)
цифра меняется в зависимости от того на какую страницу перехожу. переход запрограммирован в обработчике события OnClick разных кнопок кодом
Код:
PCMain.TabIndex:=0;
цифра меняется в зависимости от индекса страницы.
помогите решить эту проблему
AJlEKCA вне форума Ответить с цитированием
Старый 21.01.2011, 12:02   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
List index out of bounds (9)
Значение индекса 9 находится вне допустимого диапазона.
в приведенных фрагментах кода
Цитата:
Код:
PCMain.TabIndex:=0;
этого однозначно нет.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 21.01.2011, 12:09   #3
AJlEKCA
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 17
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Значение индекса 9 находится вне допустимого диапазона.
в приведенных фрагментах кода

этого однозначно нет.
ItemIndex присваивается автоматически при создании страницы, нумерация начинается с нуля, так же как и в ListBox, ComboBox, Memo и тому подобных компонентах.
К тому же когда все страницы видны никаких ошибок не вылетает, всё прекрасно работает. В читате кода написан 0 как пример. Если там стоит 1, то переход осуществляется на ту страницу, которая была создана второй и стоит вторая.

Последний раз редактировалось AJlEKCA; 21.01.2011 в 12:19.
AJlEKCA вне форума Ответить с цитированием
Старый 21.01.2011, 12:25   #4
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,543
По умолчанию

Цитата:
ItemIndex присваивается автоматически
Вы пытаетесь либо обратиться к 9(по номеру) элементу массива, либо установить текущим 9 элемент списка. В то время как там не более чем [0..8].
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 21.01.2011, 12:30   #5
AJlEKCA
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 17
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
Вы пытаетесь либо обратиться к 9(по номеру) элементу массива, либо установить текущим 9 элемент списка. В то время как там не более чем [0..8].
в коде 9 ВООБЩЕ нигде нет
AJlEKCA вне форума Ответить с цитированием
Старый 21.01.2011, 13:27   #6
_Engine_
Форумчанин
 
Регистрация: 29.06.2008
Сообщений: 603
По умолчанию

Может у Вас for i := 1 to 10 , например? Откуда нам знать, описание ошибки Вам сказали, разбирайтесь сами или приводите код полностью.
_Engine_ вне форума Ответить с цитированием
Старый 21.01.2011, 14:14   #7
AJlEKCA
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 17
По умолчанию

Цитата:
Сообщение от _Engine_ Посмотреть сообщение
Может у Вас for i := 1 to 10 , например? Откуда нам знать, описание ошибки Вам сказали, разбирайтесь сами или приводите код полностью.
циклы только в обработке данных, все закрыты.
AJlEKCA вне форума Ответить с цитированием
Старый 21.01.2011, 14:25   #8
vovk
!=
Участник клуба
 
Аватар для vovk
 
Регистрация: 08.09.2008
Сообщений: 1,751
По умолчанию

Поставте бряк в том месте кода где предполагается ошибка, и прогоните код нажимая F8. И покажите кусок кода где ошибка вылетает.
Я так думаю что всё просто гдето обращается к PageControl1.Pages по номеру
Код:
PageControl1.PageCount
а не к
Код:
PageControl1.PageCount -1
или к другому компоненту по такой же схеме.
vovk вне форума Ответить с цитированием
Старый 21.01.2011, 15:02   #9
ex.cluz
Участник клуба
 
Аватар для ex.cluz
 
Регистрация: 15.01.2010
Сообщений: 1,325
По умолчанию

Я так понимаю, у вас после авторизации только 4 вкладки доступны для взаимодействия с ними юзера. А где-нибудь в коде попадается индекс 8. А поскольку индексация вкладок идет с 0, то и появляется ошибка (обращаться-то можно только к индексам с 0 до 7).
Кстати, какой код висит на обработчике смены вкладок?

И еще - вы учитываете, что вкладки скрываются, но не уничтожаются, поэтому индексация идет до 7, но обращаться можно только к видимым вкладкам (по крайней мере так, как это делаете вы, т.е. присваивая индекс)? Т.е. либо от 0 до 3, либо от 4 до 7.
Грибы - они разные. Один тебя накормит, другой тебе кино покажет...
Редактор журнала "
[ПРОграммист]"
Yan's Home Digital Lab

Последний раз редактировалось ex.cluz; 21.01.2011 в 16:34.
ex.cluz вне форума Ответить с цитированием
Старый 22.01.2011, 02:16   #10
AJlEKCA
Пользователь
 
Регистрация: 09.12.2010
Сообщений: 17
По умолчанию

Цитата:
Сообщение от ex.cluz Посмотреть сообщение
Я так понимаю, у вас после авторизации только 4 вкладки доступны для взаимодействия с ними юзера. А где-нибудь в коде попадается индекс 8. А поскольку индексация вкладок идет с 0, то и появляется ошибка (обращаться-то можно только к индексам с 0 до 7).
Кстати, какой код висит на обработчике смены вкладок?

И еще - вы учитываете, что вкладки скрываются, но не уничтожаются, поэтому индексация идет до 7, но обращаться можно только к видимым вкладкам (по крайней мере так, как это делаете вы, т.е. присваивая индекс)? Т.е. либо от 0 до 3, либо от 4 до 7.
вот сейчас специально предположила, что я либо слепая либо не знаю кода, открыла модуль в блокноте, набрала в поиске восьмерку и прошлась по всему тексту. результат - индекса такого нигде нет, только в именах компонентов попадается.
да, обращение идет только к видемым компонентам, иначе скрывать их не имело бы смысла. при авторизации одного пользователя, которому доступны вкладки от 0 до 3, никаких проблем нет, а при авторизации другого начинается вот такая история
Цитата:
List index out of bounds (9)
вкладки меняютс по коду
Код:
PCMain.TabIndex:=0;
вместо 0 стоят цифры от 1 до 3 для одного пользователя, и от 5 до 7 для другого

Последний раз редактировалось AJlEKCA; 22.01.2011 в 02:26.
AJlEKCA вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Видимость компонентов Guitar Помощь студентам 5 14.12.2010 15:19
Видимость скроллбаров mutabor Общие вопросы Delphi 13 10.09.2010 18:16
видимость данных. запутался navi2 Общие вопросы C/C++ 4 05.04.2010 21:34
Видимость констант tae1980 Microsoft Office Excel 5 23.11.2009 12:06
Видимость переменных tae1980 Microsoft Office Excel 3 26.03.2009 18:34