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

Тема в разделе "Delphi - Компоненты", создана пользователем V88, 15 мар 2010.

  1. V88

    V88 Well-Known Member

    Регистрация:
    22 окт 2008
    Сообщения:
    51
    Симпатии:
    0
    Всем привет!
    Я динамически создаю для 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-й] удален, а какой нет?
     
  2. Dock1100

    Dock1100 :-]

    Регистрация:
    9 ноя 2009
    Сообщения:
    678
    Симпатии:
    0
    Врядле поможет но попробуй
    Код (Text):
    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)
     
  3. V88

    V88 Well-Known Member

    Регистрация:
    22 окт 2008
    Сообщения:
    51
    Симпатии:
    0
    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, сам как то и не догадался сразу.
     
  4. SNike

    SNike Гость

    Есть еще полезная штука: FreeAndNil, если не ошибаюсь из модуля SysUtils
     

Поделиться этой страницей