Witam,

To co chcę uzyskać, to tworzenie/niszczenie dynamicznie zakładek TabSheet na PageControl.
Na zakładce są tworzone dynamicznie obiekty typu TEdit, TMemo, TBitBtn. Ten ostatni zdarzeniem OnClick ma zamknąć=zniszczyć zakładkę, na której się znajduje.

Jako że dynamicznie tworzone obiekty obchodziłem jak tylko się dało innymi sposobami, tak teraz próbuję się do nich przekonać, więc poszperałem trochę w sieci i znalazłem takie rozwiązanie, które w mojej adaptacji wygląda tak:

var IndexTab: Integer;
var PC1 : TPageControl;

IndexTab:=0;

procedure TForm1.BtnOnClick(Sender: TObject);
begin
  (Sender as TBitBtn).Parent.Free;
end;

procedure ZdarzenieTworzaceZakladkeZWyposazeniem;
var TS: TTabSheet;
    memo: TMemo;
    edit: TEdit;
    bbex: TBitBtn;
begin
  ts:=TTabSheet.Create(PC1);
    with ts do
      begin
        Parent:=PC1;
        PageControl:=PC1;
        //
        Caption:='TabSzit'+IntToStr(IndexTab);
        Show;
      end;

  bbex:=TBitBtn.Create(self);
    with bbex do
      begin
        Parent:=TS;
        Left:=260; Top:=0;
        Width:=21; Height:=21;
        Caption:='X';
        OnClick:=BtnOnClick;
      end;
  memo:=TMemo.Create(self);
    with memo do
      begin
        Parent:=TS;
        Left:=0; Top:=25;
        Width:=281; Height:=111;
        Clear;
      end;
  edit:=TEdit.Create(self);
    with edit do
      begin
        Parent:=TS;
        Left:=0; Top:=140;
        Width:=281; Height:=21;
        Clear;
      end;
  Inc(TabIndex);
end;

I teraz pytanie:

  1. Czy to powyższe tworzenie jest prawidłowe? (efekt jest zadowalający - kontrolki się pojawiają)
  2. Czy niszczenie jest prawidłowe?
  3. Dlaczego w tej postaci kodu naciśnięcie TBitBtn'a powoduje, że wyskakuje "Abstract Error"?

Prosiłbym o jakiekolwiek wskazówki.