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;