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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.05.2008, 11:25   #1
Airou
Форумчанин
 
Регистрация: 09.04.2008
Сообщений: 151
По умолчанию Ошибка в коде (BorderStyle)

EStringListError Index out of Bounds (0) Ошибка вылетает на 4 строчке когда я пытаюсь изменить BorderStyle ... подскажите плз в чем проблема.

Код:
procedure TForm3.BitBtn2Click(Sender: TObject);
begin
  PageControl1.ActivePageIndex:=1;
  Form3.BorderStyle:=bsSizeable;
end;

procedure TForm3.TabSheet1Show(Sender: TObject);
begin
  Form3.BorderStyle:=bsSingle;
  Form3.Height:=485;
  Form3.Width:=735;
end;

procedure TForm3.FormShow(Sender: TObject);
begin
 If PageControl1.ActivePageIndex<>0 then PageControl1.ActivePageIndex:=0;
end;
Airou вне форума Ответить с цитированием
Старый 23.05.2008, 11:46   #2
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Ошибка эта к BorderStyle отношения не имеет. Это выход за пределы массива. По ходу ошибка здесь:
PageControl1.ActivePageIndex:=1;
Похоже что нет такого индекса.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 23.05.2008, 11:57   #3
Airou
Форумчанин
 
Регистрация: 09.04.2008
Сообщений: 151
По умолчанию

Именно без этой строчки все работает... сам не понимаю что к чему.
Страницы всего две...
Airou вне форума Ответить с цитированием
Старый 23.05.2008, 11:57   #4
SERG1980
Участник клуба
 
Аватар для SERG1980
 
Регистрация: 28.03.2007
Сообщений: 1,814
По умолчанию

На четвёртую строку кода вряд ли стоит грешить проверил у себя работает.
SERG1980 вне форума Ответить с цитированием
Старый 23.05.2008, 12:14   #5
Airou
Форумчанин
 
Регистрация: 09.04.2008
Сообщений: 151
По умолчанию

Да блин ... заметил что проблема возникает вообще из-за попытки изменить BorderStyle ... что может блокировать такое действие?

Убрал 4ую и 9ую строчку - все прекрасно работает ... но мне нужно чтобы форма с открытой TabSheet1 не растягивалась.

Последний раз редактировалось Airou; 23.05.2008 в 12:18.
Airou вне форума Ответить с цитированием
Старый 23.05.2008, 12:23   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Form3.BorderStyle:=bsSingle;
Убери это, все равно потом выполняется Form3.BorderStyle:=bsSizeable;

Вообще малопонятный код, задачу обьясни, полюбому есть другие способы это сделать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.05.2008, 12:33   #7
Airou
Форумчанин
 
Регистрация: 09.04.2008
Сообщений: 151
По умолчанию

Есть форма Form3 на ней PageControl с 2мя страницами. При переходе с главной формы на Form3, активной становиться 1ая страница с bsSingle(тобишь чтобы не растягивалась.) и присваиваються форме нужные размеры. При нажатии на кнопку BitBtn2 активируеться 2ая страница c bsSizeble и размеры ее можно менять как пожелаете (там например WebBrouser стоит). Но если вы захотите вернуться на 1ую страницу она должна быть в первоначальном состоянии(7-12 сточка кода).

Да и еще как сделать чтобы при закрытии формы3 с активной второй страницей заново открывалась форма3. Пытался сделать через глобальную булевую переменную, которую делал True если в событии onClose формы3 - ActivePageIndex=1, и через Form1.Activate проверять эту переменну и соответсвенно с этим открывать форму3.

EInvalidOperation Cannot change Visible in OnShow OnHide operation

Цитата:
procedure TForm3.FormClose(Sender: TObject; var Action: TCloseAction);
begin
If PageControl1.ActivePageIndex=1 then OpenForm3:=True;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
If OpenForm3 then Form3.Show;
end;

procedure TForm3.FormShow(Sender: TObject);
begin
OpenForm3:=False;
If PageControl1.ActivePageIndex<>0 then PageControl1.ActivePageIndex:=0;
end;

Последний раз редактировалось Airou; 23.05.2008 в 13:13.
Airou вне форума Ответить с цитированием
Старый 23.05.2008, 14:35   #8
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Первая ошибка, чтобы ты не говорил, к стилю окна не имеет абсолютно никакого отношения
EStringListError Index out of Bounds (0)
Это обращение к несуществующему элементу, а ты уже сам смотри какие у тебя там массивы есть. Строка должна подсветиться где ошибку вызывает.
Ты их хоть создал эти страницы?

Дальше:
EInvalidOperation Cannot change Visible in OnShow OnHide operation
Невозможно менять свойство Visible в OnShow OnHide обработчиках
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 23.05.2008, 14:51   #9
Airou
Форумчанин
 
Регистрация: 09.04.2008
Сообщений: 151
По умолчанию

Не обращаюсь я ко всему существующему ... хз в чем проблема. Короче я тупо создал еще одну форму и туда поместил то что надо... вот и все.

По проблеме пробуйте создать форму на ней PageControl с 2мя страницами и на каждой поставьте кнопку перехода на другую страницу.
Потом используйте следующий код. Как результат ошибка.

Цитата:
procedure TForm1.Button1Click(Sender: TObject);
begin
PageControl1.ActivePageIndex:=1;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
PageControl1.ActivePageIndex:=0;
end;

procedure TForm1.TabSheet1Show(Sender: TObject);
begin
Form1.BorderStyle:=bsSingle;
end;

procedure TForm1.TabSheet2Show(Sender: TObject);
begin
Form1.BorderStyle:=bsSizeable;
end;
Airou вне форума Ответить с цитированием
Старый 23.05.2008, 15:29   #10
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А все потому что если пойти в генофонт то можно увидеть что
Form1.BorderStyle:=bsSizeable; влечет за собой RecreateWnd;
т.е. опять происходит событие отображения всего что на форме включая и TabSheet, а в нем опять эта команда.
Зацикливание до Stack Overflow доходит. Понимаеш? Этакий абсурдик получается.
НЕ стоит так делать.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ ошибка в коде. Непонимаю что не так POPOV Помощь студентам 2 04.09.2008 18:04
AD (LDAP) - ошибка в коде, на рассмотрение Mouse123 Общие вопросы Delphi 3 30.06.2008 14:10
Ошибка в коде nikleb Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 10.03.2008 22:48
Где ошибка в коде? Македонский Общие вопросы Delphi 16 10.09.2007 15:45
Что в коде не так? Simply-Art Общие вопросы Delphi 3 08.07.2007 19:32