Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   tabitem.text zur Laufzeit ändern (FMX, Android) (https://www.delphipraxis.net/192517-tabitem-text-zur-laufzeit-aendern-fmx-android.html)

Dabei-seit-Turbo-Pascal-2 26. Apr 2017 00:46

tabitem.text zur Laufzeit ändern (FMX, Android)
 
Ich weise zur Laufzeit einem Tabitem.text einen neuen Wert (String) zu. Dieser wird aber nicht angezeigt. Sichtbar bleibt weiterhin der alte Text.

Ich verwende Delphi 10.2 Tokyo, Firemonkey und compiliere für Android.

Diverse Versuche mit Tabitem.Repaint, TabControl.Repaint und .beginupdate / .endupdate waren erfolglos.

Ein Tabitem.visible :=false / :=true vor / nach der Zuweisung an Tabitem.text haben zur Anzeige des neu zugewiesenen Textes geführt, aber alle anderen Controls des Tabitems waren danach nicht mehr sichtbar.

Wechsele ich auf ein anderes Tabitem, ändert sich die Beschriftung des dann inaktiven Tabitems auf den neu zugewiesenen Wert. Wechsele ich wieder zurück, erscheint bei dem dann wieder aktiven Tabitem auch wieder die alte Beschriftung.

Es scheint, als verwende Delphi hier zwei Texte: Den Text für ein inaktives Tabitem ändere ich mit der Zuweisung an Tabitem.text, der Text, der bei aktivem Tabitem angezeigt wird, bleibt von der Zuweisung zur Laufzeit unberührt.

Ob die Zuweisung an Tabitem.text erfolgt, während das Tabitem das TabControl.ActiveTab ist oder nicht, macht keinen Unterschied.

Getestet habe ich mit einem LG-Mobiltelefon mit Android 5.0.2.

Uwe Raabe 26. Apr 2017 08:41

AW: tabitem.text zur Laufzeit ändern (FMX, Android)
 
Kannst du das mit einem Minimalbeispiel reproduzieren?

Dabei-seit-Turbo-Pascal-2 26. Apr 2017 09:07

AW: tabitem.text zur Laufzeit ändern (FMX, Android)
 
> Kannst du das mit einem Minimalbeispiel reproduzieren?

Habe ich gerade versucht mit einem Form, welches nur einen TabControl mit zwei Tabitems und einen Button zum Zuweisen des neuen Textes an das TabItem1 enthält. In dieser Minimalkonfiguration tritt der Fehler nicht auf.

Ich werde nachher mal eine Kopie meines Projektes machen und nach und nach Dinge daraus löschen oder deaktivieren und schauen, ob und wann die Zuweisung auch dort wieder funktioniert.

Melde mich dann wieder.

Dabei-seit-Turbo-Pascal-2 26. Apr 2017 12:56

AW: tabitem.text zur Laufzeit ändern (FMX, Android)
 
*** Problem gelöst ***

Das Formular mit dem anzeigeresistenten TabItem1.Text enthält auch ein TEdit. Bei diesem wollte ich den Eingabebereich mit gelbem Hintergrund haben. Dazu bin ich so vorgegangen, wie ich es hier

http://stackoverflow.com/questions/1...-in-firemonkey

gefunden habe. Dadurch wurde ein modifizierter Style erzeugt und meinem Form eine Stylebook1-Komponente hinzugefügt und verbunden.

Nachdem ich dieses Stylebook1 vom Form gelöscht habe, wird die Zuweisung Tabitem1.Text := 'abc' sofort angezeigt. Ob das TabItem1 dabei das TabControl1.ActiveTab ist oder nicht, spielt keine Rolle.

Was genau an meinem Style querschießt, kann ich nicht sagen. Mit den Firemonkey-Styles wollte ich mich eigentlich erst später beschäftigen, habe aber das Gefühl, das vorziehen zu müssen.

Dabei-seit-Turbo-Pascal-2 26. Apr 2017 17:52

AW: tabitem.text zur Laufzeit ändern (FMX, Android)
 
Liste der Anhänge anzeigen (Anzahl: 1)
> Kannst du das mit einem Minimalbeispiel reproduzieren?

Habe das funktionierende Minimalbeispiel aus Beitrag #3 um einen TEdit mit Style für gelben Hintergrund gemäß dem Stackoverflow-Link aus Beitrag #4 erweitert. Damit tritt das Zuweisungsproblem bei mir reproduzierbar auf.

Löscht man das Stylebook1 aus dem Form, wird die Zuweisung an Tabitem1.Text richtig angezeigt.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:20 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