Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Cross-Platform-Entwicklung (https://www.delphipraxis.net/91-cross-platform-entwicklung/)
-   -   XE6: Problem mit Autosize (https://www.delphipraxis.net/180123-xe6-problem-mit-autosize.html)

eddie11 24. Apr 2014 13:55

XE6: Problem mit Autosize
 
Hi

bei XE6 und FMX habe ich ein Problem mit Autosize von Labels. Wenn ich Autosize auf True stelle, dann wird ja die Breite eines Labels automatisch anhand des Inhalts gesetzt. Das war jedenfalls bisher so. Bei XE6 ist die Breite immer zu klein, ich muss ein Space hinter den Text setzen, um die korrekte Breite zu kriegen, sonst fehlt das letzte Zeichen!

Noch schlimmer ist es, wenn ein Label zur Entwurfszeit leer ist und erst zur Laufzeit mit Daten gefüllt wird: dann passiert nämlich erkennbar garnichts, das Label ist weiterhin nicht sichtbar (Width=0).

Ich setze noch XP ein umd habe eine Bildschirm-Auflösung von 2560x1600.

Ähnliche Erfahrungen/Workaround bei Euch?

himitsu 24. Apr 2014 14:32

AW: XE6: Problem mit Autosize
 
Eventuell ist das ein Problem mit der Skalierung, wo dann falsch gerechnet wird? (ungleich 100%)
http://www.delphipraxis.net/180023-f...d-150-dpi.html

Bei 100% schneidet der nichts ab, aber das mit dem '' ist hier auch.

Da könnte es sein, daß AutoSize erst im OnPaint neu berechnet wird und wenn das Ding nicht sichtbar ist, dann wird es nie neu gezeichnet.
- entweder kein AutoSize verwenden
- niemals leer werden lassen
- vorher das Width hochsetzen, bevor der Text zugewiesen wird.
- oder eventuell ist die Berechnungsmethode öffentlich, dann Diese nachher manuell aufrufen

eddie11 24. Apr 2014 15:02

AW: XE6: Problem mit Autosize
 
Die Windows-Einstellung wurde nicht verändert, die Skalierung steht auf 100%. Auf einem anderen System mit kleinerer Auflösung funktioniert es, d.h. der komplette Text wird angezeigt.

Das Problem mit dem '' ist blöd, da ich mitunter mahrere Labels nebeneinander mit align right/left habe, da kann ich dann nicht auf AutoSize verzichten - muss ich mal nach nem anderen Workaround suchen...

jaenicke 24. Apr 2014 15:42

AW: XE6: Problem mit Autosize
 
Hast du schon geschaut, ob es einen QC Eintrag gibt und ggf. einen erstellt? Wenn das mit XE5 noch ging und du im Titel direkt ranschreibst, dass es eine Regression ist, ist die Chance hoch, dass es in einem Update korrigiert wird.

Union 24. Apr 2014 16:10

AW: XE6: Problem mit Autosize
 
Das ist doch ein dead end. Ich habe inzwischen die Schnauze voll von FMX auf dem Desktop. Wird nur noch für mobile eingesetzt, im Gemisch mit nativen Komponenten. Mit jeder Version wird es schlimmer. 3 Jahre und 4 Versionen sollten wohl genügen.

Harry Stahl 24. Apr 2014 17:00

AW: XE6: Problem mit Autosize
 
Problem tritt vor allem dann auf, wenn man

Delphi-Quellcode:
FMX.Types.GlobalUseDirect2D := false;
gesetzt hat, um die Schrift zu verbessern.

Ferner ist es ein Problem der Übernahme von XE5-x zu XE6.

Während unter XE5 und Vorgänger die Eigenschaft "Trimming" für das TLabel per Default auf ttNone steht, wird sie bei der Übernahme eines Projektes zu XE6 auf "Charakter" gesetzt. Die Eigenschaft Trimming findet Ihr in XE6 nun unter Textsettings.

Es hilft also dann, bei allen Labels das wieder auf TTNone zu setzen.
Ich persönlich werde und möchte GlobalUseDirect2D weiterhin auf false lassen, weil die Schrift dann deutlich besser ist.

Übrigens ist die Schrift auch bei der Übernahme zu XE6 in allen Forms größer. Das liegt daran, dass überall für die Schriftgröße, wo vorher "Size=11" stand, nun ein neuer Eintrag "Default" verwendet wird, der aber nun die Bedeutung "Size=12" hat. Besonders schlecht funktioniert Autosize zudem, wenn man noch eine Nicht True-Type-Schriftart verwendet, wie z.B. MS Sans Serif. Besser gehen Arial oder Segeo UI (was Standard = Default ist).

Will man seine Anwendung also nicht anders als zuvor aussehen lassen, muss man das anpassen.

Die Beste Lösung ist wohl (vor allem derzeit), Autosize auszustellen (was ich sowieso empfehle, wenn man die Anwendung auch unter 125% Skalierungen (Anzeigeeigenschaften Betriebssystem) oder mehr verwenden möchte).

Da ich glaube, dass das weder irgendwo unter "Was gibt es neues... in XE6" beschrieben ist, noch, dass das nun einen besonderen Sinn macht, kann ich die emotionale Lage von Union sehr gut nachvollziehen.

Was aber nicht heißen soll, dass ich nicht weiter am Ball bleibe...

eddie11 25. Apr 2014 10:45

AW: XE6: Problem mit Autosize
 
Danke,

Zitat:

Während unter XE5 und Vorgänger die Eigenschaft "Trimming" für das TLabel per Default auf ttNone steht, wird sie bei der Übernahme eines Projektes zu XE6 auf "Charakter" gesetzt. Die Eigenschaft Trimming findet Ihr in XE6 nun unter Textsettings.
Das hat geholfen, auf meinem großen Monitor mit der hohen Auflösung wird allerdimngs immer noch hinten ein kleiner Rand abgeschnitten.
Ansonsten werde ich wohl in Zukunft auf Autosize verzichten.

Harry Stahl 25. Apr 2014 17:47

AW: XE6: Problem mit Autosize
 
Zitat:

Zitat von eddie11 (Beitrag 1256918)
Danke,
Das hat geholfen, auf meinem großen Monitor mit der hohen Auflösung wird allerdimngs immer noch hinten ein kleiner Rand abgeschnitten.
Ansonsten werde ich wohl in Zukunft auf Autosize verzichten.

Ja, das mit dem Abschneiden ist auch hier so. Außerdem habe ich festgestellt, dass bei der Verwendung eines Nicht-True-Type-Fonts das Autosize auch in der Höhe fehlerhaft durchgeführt wird, beim g oder p fehlen also die unteren Pixel.

Man fragt sich, ob es bei EMBA keine Qualitätskontrolle oder unit-tests gibt?

oPok 20. Okt 2014 18:09

AW: XE6: Problem mit Autosize
 
Habe die gleichen Probleme mit XE7. Es wurde also noch nicht behoben.

Harry Stahl 20. Okt 2014 23:58

AW: XE6: Problem mit Autosize
 
Ja, kann ich leider bestätigen, Problem ist in XE7 noch nicht behoben:(
Hilft nur Autosize ausstellen, Trimming auf ttnone setzen und ausreichend Platzreserve belassen.


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