Delphi/Lazarus: TabSheet auf PageControl dynamisch erzeugen
Tutorial von Stefan Trost | Letztes Update am 21.01.2023 | Erstellt am 29.10.2013
In diesen Tutorial möchte ich euch zeigen, wie ihr mit Delphi oder Lazarus eine beliebige Anzahl von TabSheets auf einem TPageControl dynamisch zur Laufzeit erzeugen könnt.
Dazu möchten wir uns zwei verschiedene Beispiele ansehen. Im ersten Beispiel zeige ich euch, wie ihr einzelne TabSheets dynamisch zu einem PageControl hinzufügen könnt, wenn der Nutzer auf einen Button klickt. Im zweiten Beispiel schauen wir uns an, wie wir eine fixe Anzahl von TabSheets mit dem Erstellen der Form dynamisch erstellen können.
- Einzelne TabSheets dynamisch zur Laufzeit erzeugen
- Feste Anzahl von TabSheets mit dem Erstellen der Form erzeugen
Beispiel 1: Einzelne TabSheets dynamisch zur Laufzeit erzeugen
Im ersten Beispiel haben wir einen Button. Jedes Mal, wenn wir auf diesem Button klicken soll ein neuer TabSheet erzeugt und zu unserem PageControl hinzugefügt werden.
procedure TForm1.Button1Click(Sender: TObject); var ATabNumber: integer; ANewTab: TTabSheet; ANewLabel: TLabel; begin ATabNumber := PageControl1.PageCount + 1; ANewTab := TTabSheet.Create(PageControl1); ANewTab.PageControl := PageControl1; ANewTab.Name := 'Tab' + IntToStr(ATabNumber); ANewTab.Caption := 'Tab ' + IntToStr(ATabNumber); ANewLabel := TLabel.Create(ANewTab); ANewLabel.Name := 'TabLabel' + IntToStr(ATabNumber); ANewLabel.Caption := 'Test'; ANewLabel.Left := 20; ANewLabel.Top := 20; ANewLabel.Visible := true; ANewLabel.Parent := ANewTab; end;
Zunächst erzeugen wir ein neues TabSheet und fügen dieses zu unserem gewünschten PageControl hinzu. Dies ist in unserem Beispiel PageControl1. In der Variablen ATabNumber haben wir uns noch vor dem Erstellen des Tabs die Anzahl der TabSheets auf dem PageControl gemerkt, so dass wir daraus einen eindeutigen Namen ableiten können. Würden wir immer denselben Namen vergeben, würde es eine Fehlermeldung geben.
Ein leerer Tab bringt bekanntlich wenig, deswegen wollen wir anschließend noch beispielhaft ein Label auf das TabSheet setzen. Wichtig ist dabei, dass wir unseren neuen Tab als Parent des neuen Labels einsetzen, damit das Label auch auf das TabSheet gesetzt wird.
Beispiel 2: Feste Anzahl von TabSheets mit dem Erstellen der Form erzeugen
In unserem zweiten Beispiel möchte ich zeigen, wie man eine feste Anzahl von TabSheets schon beim Erstellen des Formulars (OnCreate) zu einem PageControl hinzufügen kann.
procedure TForm1.FormCreate(Sender: TObject); var ANewTab: TTabSheet; ATabNumber: integer; begin for ATabNumber := 1 to 10 do begin ANewTab := TTabSheet.Create(PageControl1); ANewTab.PageControl := PageControl1; ANewTab.name := 'tab' + IntToStr(ATabNumber); ANewTab.Caption := 'Tab ' + IntToStr(ATabNumber); end; end;
Insgesamt werden damit 10 TabSheets auf unserem PageControl erzeugt. Wieder ist es wichtig, eindeutige Namen zu vergeben und die Tabs dem richtigen PageControl hinzuzufügen. Auf ein Label verzichten wir hier, da sich auch in dieser Schleife einfach das Beispiel von oben anpassen lässt.
Über den Autor
Software von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen
Ähnliche Themen
Delphi: Mehrzeilige Caption für TLabel (zur Laufzeit und Design Zeit)
Tutorial | 1 Kommentar
Delphi: TabSheets an erste Stelle von PageControl hinzufügen
Frage | 1 Antwort
Delphi/Lazarus: 3 Wege um eine Zahl auf X Nachkommastellen zu runden
Tutorial | 0 Kommentare
Delphi/Lazarus: Label zur Laufzeit dynamisch erstellen
Tipp | 0 Kommentare
Delphi/Lazarus: Kommandozeilen Parameter Tutorial Teil 1: Senden
Tutorial | 0 Kommentare
Mehrere Texte gleichzeitig ersetzen
Tutorial | 0 Kommentare
Wichtiger Hinweis
Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.
Jetzt mitmachen
Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.