AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language FMX TTabControl - TTabItem während der Laufzeit entfernen
Thema durchsuchen
Ansicht
Themen-Optionen

FMX TTabControl - TTabItem während der Laufzeit entfernen

Ein Thema von Wiener · begonnen am 1. Sep 2022 · letzter Beitrag vom 5. Sep 2022
Antwort Antwort
Wiener

Registriert seit: 27. Apr 2022
Ort: Wien
15 Beiträge
 
Delphi 10.4 Sydney
 
#1

FMX TTabControl - TTabItem während der Laufzeit entfernen

  Alt 1. Sep 2022, 16:40
Delphi-Version: 10.4 Sydney
Hallo Leute,

habe zwar gesucht aber leider nur viel über die VCL Komponente gefunden.
Mein Problem ich bekomme die TTabItems einfach nicht vom Control entfernt.
Hat wer eine Lösung oder Tip für mich

Delphi-Quellcode:
if ObjektFrame.TabControlKfzSparte.TabCount >= 0 then
      begin
       for x:= 0 to ObjektFrame.TabControlKfzSparte.TabCount -1 do
         begin
            if Assigned(ObjektFrame.TabControlKfzSparte.Tabs[x]) then
            begin
               ObjektFrame.TabControlKfzSparte.BeginUpdate;
                  ObjektFrame.TabControlKfzSparte.Tabs[x].Free; // RemoveObject(x);
               ObjektFrame.TabControlKfzSparte.EndUpdate;
            end;
         end;
         //ObjektFrame.TabControlKfzSparte.DeleteChildren;
      end;

      for x := 0 to DataModule1.FDQuery_Sonstiges.RecordCount-1 do
      begin
         if DataModule1.FDQuery_Sonstiges.FieldByName('Sparten').AsString <> 'KFZ-Kasko (nur bis inkl. Vers. 212-02 zu verw.)then
            Temptext:= DataModule1.FDQuery_Sonstiges.FieldByName('Sparten').AsString
         else
            Temptext:= 'KFZ-Kasko';

         // TabItems der Sparten erstellen
         Ttab:= TTabItem.Create(ObjektFrame);
         Ttab.Parent:= ObjektFrame.TabControlKfzSparte;
         Ttab.Text:= Temptext;
         ObjektFrame.TabControlKfzSparte.BeginUpdate;
            ObjektFrame.TabControlKfzSparte.AddObject(Ttab);
         ObjektFrame.TabControlKfzSparte.EndUpdate;

         DataModule1.FDQuery_Sonstiges.Next;
      end;

      ObjektFrame.TabControlKfzSparte.First();
Markus
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
2.960 Beiträge
 
Delphi 12 Athens
 
#2

AW: FMX TTabControl - TTabItem während der Laufzeit entfernen

  Alt 1. Sep 2022, 22:40
Falls das nicht gehen sollte: kann man es einfach Visible := false machen?
  Mit Zitat antworten Zitat
Benutzerbild von Harry Stahl
Harry Stahl

Registriert seit: 2. Apr 2004
Ort: Bonn
2.538 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: FMX TTabControl - TTabItem während der Laufzeit entfernen

  Alt 2. Sep 2022, 00:49
Bin gerade unterwegs und habe kein Delphi zur Hand. Gab es da nicht auch ein .delete für die Tabitems?

Wie auch immer, eine Liste muss man von count-1 Down to 0 durchlaufen, wenn man einzelne Einträge löschen will…
  Mit Zitat antworten Zitat
Wiener

Registriert seit: 27. Apr 2022
Ort: Wien
15 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: FMX TTabControl - TTabItem während der Laufzeit entfernen

  Alt 2. Sep 2022, 09:50
Bin gerade unterwegs und habe kein Delphi zur Hand. Gab es da nicht auch ein .delete für die Tabitems?

Wie auch immer, eine Liste muss man von count-1 Down to 0 durchlaufen, wenn man einzelne Einträge löschen will…
Danke
habs gelöst:

Delphi-Quellcode:
if ObjektFrame.TabControlKfzSparte.TabCount >= 0 then
      begin
       x:= ObjektFrame.TabControlKfzSparte.TabCount -1;
       while ObjektFrame.TabControlKfzSparte.TabCount -1 >= 0 do
         begin
               ObjektFrame.TabControlKfzSparte.BeginUpdate;
                  ObjektFrame.TabControlKfzSparte.Delete(x);
               ObjektFrame.TabControlKfzSparte.EndUpdate;
               dec(x,1);
         end;
      end;
Markus
  Mit Zitat antworten Zitat
BerndS

Registriert seit: 8. Mär 2006
Ort: Jüterbog
491 Beiträge
 
Delphi 12 Athens
 
#5

AW: FMX TTabControl - TTabItem während der Laufzeit entfernen

  Alt 2. Sep 2022, 10:38
Das BeginUpdate/EndUpdate würde ich noch verschieben, damit es nur einmal aufgerufen wird.
Delphi-Quellcode:
if ObjektFrame.TabControlKfzSparte.TabCount >= 0 then
begin
  ObjektFrame.TabControlKfzSparte.BeginUpdate;
  try
    x:= ObjektFrame.TabControlKfzSparte.TabCount -1;
    while ObjektFrame.TabControlKfzSparte.TabCount -1 >= 0 do
    begin
       ObjektFrame.TabControlKfzSparte.Delete(x);
       dec(x,1);
    end;
  finally
    ObjektFrame.TabControlKfzSparte.EndUpdate;
  end;
end;
  Mit Zitat antworten Zitat
freimatz

Registriert seit: 20. Mai 2010
1.456 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: FMX TTabControl - TTabItem während der Laufzeit entfernen

  Alt 2. Sep 2022, 13:53
Wie wärs mit https://www.delphipraxis.net/18-gui-...mmon-controls/
  Mit Zitat antworten Zitat
Dennis07

Registriert seit: 19. Sep 2011
Ort: Deutschland
488 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: FMX TTabControl - TTabItem während der Laufzeit entfernen

  Alt 5. Sep 2022, 13:56
Hatte das auch mal, und bin an ein Problem gestoßen: Falls das der Tab selektiert ist, auf dem sich der Schließen-Button befindet, dann klappt das nicht so wirklich.
Embarcadero im QP so: Wir wollen nicht, dass so etwas geht, weil das das gegen unsere Design-Philosophie verstößt.
Trotzdem dann mit TTask hinbekommen...

Hier der Weg, wie es gemacht werden sollte:

Delphi-Quellcode:
TTask.Run(
    procedure
    begin
      TThread.Synchronize(nil,
        procedure
        begin
         TabItem1.DisposeOf;
         if TabControl1.TabIndex>TabControl1.TabCount-1
           then TabControl1.TabIndex:=TabControl1.TabCount-1
        end);
    end);
Dennis

Geändert von Dennis07 ( 5. Sep 2022 um 13:58 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:34 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz