Hallo.
Destroy() ist grundsätzlich falsch. Free() sollte funktionieren. Ist denn TabIndex ein gültiger Index? Oder kann es sein, dass der Fehler erst nach dem Free() auftritt? Zur Verdeutlichung zeige ich dir die Löschroutine für ActivePage:
Delphi-Quellcode:
procedure TDemoForm.TabCloseActionExecute(Sender: TObject);
var
i: Integer;
begin
with PageControl do
begin
i := ActivePageIndex;
ActivePage.Free;
if i < PageCount then
ActivePageIndex := i;
end;
end;
Vielleicht setzt du mal einen Haltepunkt auf die Zeile mit Free in deinem Code und gehst mit F8 drüber hinweg.
Grüße vom marabu