![]() |
Höhe eines Textes in einem Memo ermitteln
Hallo,
in einer Android-App werden Texte in Memos angezeigt. Benutzer bemängeln nun, dass man nicht erkennen kann ob mehr Text vorhanden ist und gelesen werden müsste als momentan je nach Größe des Memos sichtbar ist. Die Scrollbars kommen ja erst, wenn man das Memo antippt :-( Nun wollte ich die Gesamthöhe des enthaltenen Textes ermitteln, mit der Memo-Höhe vergleichen und ggf. ein Symbol anzeigen. Nur wie komme ich unter Android mit FMX an die Höhe des Textes? Oder gibt es einen viel besseren Ansatz, dem Anwender zu signalisieren dass da mehr ist als angezeigt wird? Ciao Stefan |
AW: Höhe eines Textes in einem Memo ermitteln
Ist die Zeilenanzahl deines Memos fix oder verändert die sich je nach Gerät/Bildschirmgröße?
|
AW: Höhe eines Textes in einem Memo ermitteln
Nja, eine Lösung währe wohl rauszufinden wie man das Memo dazubringt die scrollbar nicht auszublenden.
Du könntest auch versuchen mal das native (platform) TMemo zu nutzen, ob es sich "besser" verhält. Die Anzahl der Zeilen übe Memo.Lines.Count mit der Höhe einer Textzeile ginge auch, so lange im Memo kein Umbruch der langen Zeilen vorkommt (WordWrap), womit es dann mehr Zeilen wären. Zitat:
Viele Einflüsse, auf das Verhältnis von Text zu Memo. |
AW: Höhe eines Textes in einem Memo ermitteln
Hallo,
ich habe mal mit folgendem Code:
Delphi-Quellcode:
versucht, ein Label mit " v v v v v " im Memo anzeigen zu lassen.procedure TFormMain.MemoAuftragChange(Sender: TObject); var r: TRectF; begin // Font nochmal übergeben sonst funktioniert Measuretext nicht! TMemo(Sender).Canvas.Font.Assign(TMemo(Sender).Font); r := RectF(0, 0, TMemo(Sender).ViewportSize.Width, 20000); TMemo(Sender).Canvas.MeasureText(r, TMemo(Sender).text, true, [], TTextAlign.Leading, TTextAlign.Leading); LabelScrollHinweis.Visible := r.Bottom > TMemo(Sender).ViewportSize.Height; Das funktioniert mit 2 Einschränkungen: 1) das Label hat als Parent das Memo und ist Align = alCenter und wird dort auch wie gewünscht angezeigt. Scrollt man nun im Text bewegt sich das Label mit! 2) Das label wird zwar per Code visible = true aber wird erst sichtbar wenn man das Memo in der Größe ändert (die FormMain vergrößert) Bekommt man das auch noch irgendwie hin? Ciao Stefan |
AW: Höhe eines Textes in einem Memo ermitteln
Ich habe zumindest mal bei anderen Control mit dem TextHeight von Canvas mal Erfolg gehabt.
Delphi-Quellcode:
Setze es aber momentan nicht ein, der Test war vor Rx10.0.x
// In OnUpdateObjects vom ListView
LCtrl.Canvas.Font.Assign( LFont ); LTh := LCtrl.Canvas.TextHeight( 'HH' ) * LCtrl.Canvas.Scale; // so in er Art Vielleicht hilft dir das ja weiter. Rollo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:03 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