Erstellen Sie zur Laufzeit TTabItem, firemonkey

Scheint, als bräuchte ich Hilfe bei einem Projekt. Ich habe eine Routine, die Laufzeit mehrere TabItems auf einer Seite Steuerelement in Firemonkey erstellt, und ich möchte eine Schaltfläche zum Schließen auf der Registerkarte haben. Die neue Registerkarte enthält ein Kontrollkästchen für das Laden der Schließen-Schaltfläche aus dem Styler der Tabitems. Die Seite hat eine Standardregisterkarte, und innerhalb einiger Schaltflächen füge ich zur Laufzeit die neuen Registerkartenelemente hinzu. Ich habe es geschafft, das Ereignis zum Schließen der Standardregisterkarte anzuwenden, aber es funktioniert nicht innerhalb der zur Laufzeit erstellten Registerkarten. Jede Hilfe wäre dankbar.

Dies ist der Code für die Laufzeit-Tabitems

procedure TForm1.Button1Click(Sender: TObject);
var
  t : TTabItem;
  o : TFmxObject;
  i : Integer;
  c : TControl;
begin
  t := TTabItem.Create(pgeControl);

  t.Parent := pgeControl;

  o := FindBinding('imgCloseTabPage');
  if o<>nil then
  begin
    for i := 0 to ComponentCount - 1 do
    begin
      if Components[i] is TCheckBox then
      begin
        TCheckBox(Components[i]).OnClick := CheckBox1Click;
      end;
    end;
  end;

  if pgeControl.TabCount - 1 <= nTab then
  begin
    nTab := nTab + 1;
    t.Index := nTab
  end
  else
  begin
    t.Index := pgeControl.TabCount - 1;
    nTab := pgeControl.TabCount - 1;
  end;
  t.Tag := nTab;

  t.Text := 'Some text...' + ' ' + IntToStr(nTab);
  t.Name := 'tabPatient' + IntToStr(nTab);

  t.Height := 35;
  t.Width := 250;
  t.Margins.Top := 0;
  t.Margins.Left := 0;
  t.Margins.Bottom := 0;
  t.Margins.Right := 0;

  t.Padding.Top := -5;
  t.Padding.Left := 0;
  t.Padding.Bottom := 0;
  t.Padding.Right := 0;

  t.TextAlign := TTextAlign.taLeading;
  t.Width := (Length(t.Text) * 6 ) + 60;
  t.Font.Size := 15;
  t.StyleLookup := 'tabMainStyle1';

  l := TLayout.Create(t);
  l.Parent := t;
  l.Align := TAlignLayout.alClient;
  l.Margins.Top := -5;
  l.Margins.Left := 5;
  l.Margins.Right := 5;
  l.Margins.Bottom := 5;
  l.Padding.Top := 0;
  l.Padding.Left := 0;
  l.Padding.Bottom := 0;
  l.Padding.Right := 0;

  pgeControl.ActiveTab := pgeControl.Tabs[pgeControl.TabCount - 1];
end;

Antworten auf die Frage(1)

Ihre Antwort auf die Frage