![]() |
Firemonkey - TabItem zur Laufzeit einem TabControl zuweisen
Hallo Community,
ich schon wieder! :( Und zwar hänge ich jetzt an einem (eigentlich nicht so schweren) Problem. Ich habe auf meiner Form ein TTabControl. Diesem möchte ich zur Laufzeit beliebig viele TTabItems zuweisen. Hier mein derzeitiger Code:
Code:
Die zweite ShowMessage liefert mir auch das richtige Ergebnis, aber das Item ist nicht zu sehen!
procedure TForm_HF.Button1Click(Sender: TObject);
var TmpTI: TTabItem; begin showmessage(inttostr(TabControl_Checklisten.TabCount)); TmpTI := TTabItem.Create(TabControl_Checklisten); TmpTI.Parent := TabControl_Checklisten; TabControl_Checklisten.AddObject(TmpTI); TabControl_Checklisten.ActiveTab := TmpTI; showmessage(inttostr(TabControl_Checklisten.TabCount)); end; Ich weiß nicht, ob ich noch zusätzliche Einstellungen am Item oder dem Control vornehmen muss. Vielen Dank schon einmal im Voraus! Mfg Björn |
AW: Firemonkey - TabItem zur Laufzeit einem TabControl zuweisen
Unter XE2 funktioniert der Code. Die Darstellung unter XE3 ist eigenartig.
Füge mal
Delphi-Quellcode:
ein. Funktionieren tut es nämlich.
TmpTI.text := 'test';
Ferner solltest Du immer mit begin- und endupdate arbeiten.
Delphi-Quellcode:
Gruß
TmpTI := TTabItem.Create(tabcontrol1);
TmpTI.Parent := tabcontrol1; TmpTI.Text := 'test'; tabcontrol1.BeginUpdate; tabcontrol1.AddObject(TmpTI); tabcontrol1.ActiveTab := TmpTI; tabcontrol1.EndUpdate; Philip |
AW: Firemonkey - TabItem zur Laufzeit einem TabControl zuweisen
Konkret zu dem Problem kann ich im Moment nichts sagen, aber versuche einfach mal eine Formulargrößenänderung (oder minimieren+maximieren).
FMX zeichnet manchmal Änderungen von Komponenten nicht vollständig (ist ein Bug, der hoffentlich bald korrigiert wird). Man muss dann das Formular veranlassen, sich neu zu zeichnen. Es gibt einen Workaround im FMX-Sammelthread dazu. |
AW: Firemonkey - TabItem zur Laufzeit einem TabControl zuweisen
Zitat:
Hier liegt eher ein Bug im Styledesign von TTabItem vor. Die Breite der Registerkartenmarkierung ist abhängig von der Länge der Text-Eigenschaft. Mit folgenden Code wird die Registerkarte nämlich sichtbar:
Delphi-Quellcode:
setlength(mytext,1);
TmpTI.Text := mytext; Die Registerkarten werden auch mit dem Ausgangscode erstellt. Das sieht man daran, dass die Höhe des leeren Tabcontrols sich ändert. Es scheint als würde nur die Breite der Registerkarten den Wert 0 haben. [/Nicht nachgewiesene Vermutung] Gruß |
AW: Firemonkey - TabItem zur Laufzeit einem TabControl zuweisen
Vielen Dank für die schnellen und vielen Antworten.
Tatsächlich hat es ausgereicht, dem TabItem einen Text zuzuweisen. Da hätte ich auch selbst drauf kommen kommen! :? Zur Thematik Styles in Firemonkey kann ich nur sagen, dass ich in letzter Zeit viel damit experimentiert habe und auch eigene Styles erstellt habe. Das Prinzip ist echt klasse, aber ausgereift ist es auf jeden Fall noch nicht. |
AW: Firemonkey - TabItem zur Laufzeit einem TabControl zuweisen
Ich finde die Styles auch klasse.
[Frust] Wenn Du das Problem der Darstellung ohne Text-Zuweisung an EMBA melden würdest vermute ich eine Einzeilerantwort mit "works as designed" ... [/Frust] Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz