Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как удалить закладку PageControla во время выполнения прг ? [D7, WinXP]


Slaga ©   (2004-09-20 20:32:00) 

Есть PageControlс 3 закладками, а мне одну нужно удалить, в рантайме.

Как это правильно сделать ?


Slaga   (2004-09-21 15:00:00) [1]

А я все понял.
У меня ж еще компоненты были на Табе, а я сначала удалял таб, а потом пытался компонентам переприсвоить парента :))

Да, видать, мысль вчера в голову не шла.

Всем спасибо :))


basken   (2004-09-21 13:51:00) [2]

можно еще так

var
 DeletedTabSheet: TTabSheet;
begin
 DeletedTabSheet := PageControl.ActivePage;
 FreeAndNil(DeletedTabSheet);


basken   (2004-09-21 13:42:00) [3]


> У меня удалить то все получается, у меня после удаления
> не получается перейти на любую другую закладку, у меня такое
> подозрение что этим free, я удаляю что-то болше чем 1 закладку.
>
> PageControl.Pages[PageControl.ActivePageIndex].Free;


У PageControl(если он TPageControl) нет свойства ActivePageIndex...

PageControl.Pages[PageControl.ActivePage.PageIndex].Free; намана удаляет, и переходы после удаления наманые...


Slaga   (2004-09-21 12:06:00) [4]

>>Goorus ©   (21.09.04 03:53) [7]
Это я сейчас попробую, спасибо.

>>to All
У меня удалить то все получается, у меня после удаления не получается перейти на любую другую закладку, у меня такое подозрение что этим free, я удаляю что-то болше чем 1 закладку.

PageControl.Pages[PageControl.ActivePageIndex].Free;


VMcL   (2004-09-21 10:51:00) [5]

>> Slaga ©  (20.09.04 20:57) [4]

> А как надо, я ж спрашиваю!

"И не надо так кричать, я и так всё прекрасно слышу" © Кролик из м/ф

Хочешь помощи - приводи свой код, чтобы было, что обсуждать.


Goorus   (2004-09-21 03:53:00) [6]

Создание в рантайме:

 Page:=TTabSheet.Create(PageContr);
 PageContr.InsertControl(Page);
 Page.PageControl:=PageContr;
 Page.PageIndex:=Number;
 // возможно что-то и не нужно

Удаление:

 Page.Free;
 PageContr.Update;


Fedia   (2004-09-21 01:55:00) [7]

>А как надо, я ж спрашиваю!
Скорее всего ошибка возникает при попытке уничтожения не существующей закладки PageControl. Хотя точно тебе никто не скажет, можно только попытаться угадать.
Создай новой проект, PageControl с тремя закладками и выполни:
PageControl1.Pages[2].Free; Ты увидишь как это сработает, а следовательно ошибка у тебя в коде. Если не можешь ее выявить визуально и в пошаговом режиме, то комментируй свой код по частям, до тех пор, пака не закомментируешь ту часть кода, без которой ошибка исчезнет.


Defunct   (2004-09-20 21:03:00) [8]

Может достаточно просто скрыть?


Slaga   (2004-09-20 20:57:00) [9]

А как надо, я ж спрашиваю!


VMcL   (2004-09-20 20:55:00) [10]

>> Slaga ©  (20.09.04 20:39) [2]

Значит, неправильно делаешь.


Slaga   (2004-09-20 20:39:00) [11]

Да, но когда я так делаю, я теряю возможность переходить между табами, Аксес виолатио :(


Anatoly Podgoretsky   (2004-09-20 20:33:00) [12]

Все компоненты можно удалять с помощью Free


Наверх

Титульная страница Поиск, карта сайта Написать письмо