AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Höhe eines Textes in einem Memo ermitteln

Höhe eines Textes in einem Memo ermitteln

Ein Thema von sko1 · begonnen am 15. Jun 2018 · letzter Beitrag vom 15. Jun 2018
Antwort Antwort
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#1

Höhe eines Textes in einem Memo ermitteln

  Alt 15. Jun 2018, 13:09
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
  Mit Zitat antworten Zitat
TiGü

Registriert seit: 6. Apr 2011
Ort: Berlin
3.060 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Höhe eines Textes in einem Memo ermitteln

  Alt 15. Jun 2018, 13:49
Ist die Zeilenanzahl deines Memos fix oder verändert die sich je nach Gerät/Bildschirmgröße?
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu
Online

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.114 Beiträge
 
Delphi 12 Athens
 
#3

AW: Höhe eines Textes in einem Memo ermitteln

  Alt 15. Jun 2018, 13:51
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.

Ist die Zeilenanzahl deines Memos fix oder verändert die sich je nach Gerät/Bildschirmgröße?
Die Zeilenanzahl mit oder ohne WordWrap, die Größe des Memos, die Textgröße (manche passen ja alles an die Displaygröße an) und der Font, welcher auf diesem Gerät vewendet wird.
Viele Einflüsse, auf das Verhältnis von Text zu Memo.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (15. Jun 2018 um 13:55 Uhr)
  Mit Zitat antworten Zitat
sko1

Registriert seit: 27. Jan 2017
577 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Höhe eines Textes in einem Memo ermitteln

  Alt 15. Jun 2018, 14:10
Hallo,

ich habe mal mit folgendem Code:

Delphi-Quellcode:
  
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;
versucht, ein Label mit " v v v v v " im Memo anzeigen zu lassen.
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
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
3.896 Beiträge
 
Delphi 12 Athens
 
#5

AW: Höhe eines Textes in einem Memo ermitteln

  Alt 15. Jun 2018, 15:01
Ich habe zumindest mal bei anderen Control mit dem TextHeight von Canvas mal Erfolg gehabt.

Delphi-Quellcode:
  // In OnUpdateObjects vom ListView
 
  LCtrl.Canvas.Font.Assign( LFont );
  LTh := LCtrl.Canvas.TextHeight( 'HH' ) * LCtrl.Canvas.Scale; // so in er Art
Setze es aber momentan nicht ein, der Test war vor Rx10.0.x
Vielleicht hilft dir das ja weiter.

Rollo
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:29 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