Провека "Уничтожен ли компонент"

  • Автор темы Автор темы V88
  • Дата начала Дата начала
V

V88

Всем привет!
Я динамически создаю для PageControl вкладки TabSheets через массив:
var TS:array of TTabSheets;
................
TS[k]:=TTabSheet.Create(Self);
..........

В программе для некоторых случаев надо удалить ненужные вкладки путем PageControl.ActivePage.Destroy

Проблема в том, каким образом определить какая вкладка удалена:
for k:=0 to PageControl.PageCount-1 do
TS[k]..................
В этом коде выдается ошибка из-за того, что какой-то TS[k-й] удален. Другими словами, какой TS[k-й] удален, а какой нет?
 
Врядле поможет но попробуй
Код:
1 
for k:=0 to PageControl.PageCount-1 do
if TS[k]=nil then f:=0; //или в место nil null

2
for k:=0 to PageControl.PageCount-1 do
try
if TS[k]=nil then f:=0;
except
f:+0;
end;

И в место PageControl.PageCount-1 попробуй length(TS)
 
TS[k]=nil помогло, только еще надо было к PageControl.ActivePage.Destroy дописать
for i:=0 to PageControl.PageCount-1 do
if PageControl.ActivePage = TS then begin
TS:=nil;
PageControl.ActivePage.Destroy;
end;

Спасибо Dock1100, сам как то и не догадался сразу.
 
Есть еще полезная штука: FreeAndNil, если не ошибаюсь из модуля SysUtils
 
Мы в соцсетях:

Взломай свой первый сервер и прокачай скилл — Начни игру на HackerLab

Похожие темы

🚀 Первый раз на Codeby?
Гайд для новичков: что делать в первые 15 минут, ключевые разделы, правила
Начать здесь →
🔴 Свежие CVE, 0-day и инциденты
То, о чём ChatGPT ещё не знает — обсуждаем в реальном времени
Threat Intel →
💼 Вакансии и заказы в ИБ
Pentest, SOC, DevSecOps, bug bounty — работа и проекты от проверенных компаний
Карьера в ИБ →

HackerLab