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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.08.2013, 23:47   #1
waka2ebawer
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 46
По умолчанию PageControl ошибка при закрытие последней вкладки

Добрый вечер!

Имеется форма, на которой PageControl на ней создаются динамически вкладки и компоненты.

на каждой вкладке есть кнопка закрытия вкладки ее я взял из UPageControl (который во вложении)

Закрытие вкладки происходит нормально до тех пор пока не останется одна вкладка и при нажатии на крестик выкидывает ошибку
(не всегда кстати бывает что может остаться 2 вкладки и выкидывает ошибку. Они как-то сортируются при закрытие)

Access violation as address 0053219E in module 'Project1.exe'.

я заметил что когда появляется эта ошибка то PageControl1.PageIndex возвращает мне "-1"

вот код, который прописан на закрытие вкладки

Код:
procedure TForm1.PageControl1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
  TabIndex: Integer;
begin
 form1.Caption:=IntToStr(tab.PageIndex);
//ShowMessage('test '+IntToStr(Tab.PageControl.PageCount));
//Edit4.Text:=Edits[Tab.PageControl.ActivePageIndex].Text;

if GetIndexTab( Sender as TCustomTabControl, X, Y, TabIndex) then
  begin

    tab.PageControl.ActivePage.Destroy;
    
  end;

end;
Рисует кнопку закрытия вкладки
Код:
procedure TForm1.PageControl1DrawTab(Control: TCustomTabControl;
  TabIndex: Integer; const Rect: TRect; Active: Boolean);
begin
  DrawButton(Control, TabIndex, Active );
end;
Как решить проблему?

if PageControl1.pageindex=-1 then exit а потом как-то перерисовать все?

в принципе есть идея как решить когда последняя вкладка выдает ошибку , но что делать когда 2 или 3 вкладки остаются? то ли быстро закрываю то ли они сортируются и у них индексы меняются
Вложения
Тип файла: rar UPageControl.rar (2.1 Кб, 10 просмотров)
waka2ebawer вне форума Ответить с цитированием
Старый 26.08.2013, 08:39   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А ты пошаговку проходил в этой процедуре? На каком именно операторе падеж?
Кстати, может быть стоит вместо OnMouseDown на OnMouseUp перейти?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 26.08.2013, 11:22   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Скорее всего падает в каком-то обработчике событий паджеконтрола или окна, где идет обращение к вкладкам без проверки PageIndex
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 26.08.2013, 14:39   #4
waka2ebawer
Пользователь
 
Регистрация: 06.10.2009
Сообщений: 46
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
А ты пошаговку проходил в этой процедуре? На каком именно операторе падеж?
Кстати, может быть стоит вместо OnMouseDown на OnMouseUp перейти?
падает на
tab.PageControl.ActivePage.Destroy;
waka2ebawer вне форума Ответить с цитированием
Старый 26.08.2013, 14:59   #5
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

вообще принято .Free;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 26.08.2013, 15:21   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
падает на
tab.PageControl.ActivePage.Destroy;
Вот ставь туда бряк и проверяй наведением мышки что из этой цепочки ушло в nil
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не переключаться вкладки PageControl Shouldercannon Общие вопросы Delphi 1 24.05.2010 09:53
Закрытие вкладки beemoto Общие вопросы Delphi 36 23.07.2009 23:19
PageControl - сравнить вкладки. Небесный Общие вопросы Delphi 9 04.05.2009 08:43
закрытие вкладки в TTabControl Shade Помощь студентам 3 06.02.2009 13:10
закрытие вкладки в TTabControl Shade Компоненты Delphi 9 19.05.2007 03:02