AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Breite/Zeichenanzahl bei Memofeldern?

Ein Thema von Marco Steinebach · begonnen am 21. Jun 2016 · letzter Beitrag vom 21. Jun 2016
Antwort Antwort
Marco Steinebach

Registriert seit: 4. Aug 2006
491 Beiträge
 
Delphi 5 Enterprise
 
#1

Breite/Zeichenanzahl bei Memofeldern?

  Alt 21. Jun 2016, 09:51
Hallo zusammen,
bitte entschuldigt den etwas dämlichen Betreff.
Also: ich habe ein Memo-Feld (TMemo), das, pro Zeile, bis zu höchstens 28 Zeichen darstellen soll.
Also, Font auf Courier New 12, sollte ja ziemlich das unproportionalste sein, und die Breite entsprechend hingezaubert.
Jetzt mein Problem:
Wenn ich das Feld, sagen wir, 400 Pixel breit mache, passen dann beim einen Rechner nicht 30, bei einem anderen evtl. 50 Zeichen pro Zeile rein, weil der 'ne andere Auflösung hat, oder bin ich hier völlig auf dem Holzweg.
Und, um himmelswillen, gibt es für den Kram 'ne formel, also sowas wie Schriftgröße*3,7 ergibt die Breite in Pixeln?

Für Antworten wäre ich sehr dankbar!
Viele Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#2

AW: Breite/Zeichenanzahl bei Memofeldern?

  Alt 21. Jun 2016, 10:21
Ob's 'ne Formel gibt, weiß ich nicht. Aber wie wäre es damit:

Man nehme ein TLabel mit AutoSize := True und dem Font des TMemos.
Nun schreibt man in die Caption des Label 28 * W (oder ein anderes Zeichen, bei Courier New ist das ja egal).

Durch AutoSize des Labels bekommt man nun die Breite des Textes. Da ein Memo ggfls. noch die Scrollbars sichtbar hat, muss man deren Breite zur Labelbreite addieren und dann Width vom Memo auf die Labelbreite setzen.

Das Label kann man zur Laufzeit in der Berechnungsroutine erstellen, so dass man das nicht als sichtbare Komponente auf dem Formular braucht.
Delphi-Quellcode:
lb := TLabel.Create(Nil);
lb.Font := Memo.Font;
lb.Autosize := True;
lb.Caption := '01234567890123456789012345678';
Memo.Width := lb.Width; // Hier eventuell was dazu für die Scrollbar.
lb.Free;
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.110 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Breite/Zeichenanzahl bei Memofeldern?

  Alt 21. Jun 2016, 10:41
Habe ich bislang ehrlich gesagt auch so gemacht: Im Hintergrund ein TLabel erstellt, auf AutoSize gesetzt, die entsprechende Schriftart und den Text gesetzt und dann einfach geschaut wie breit der Text ist.
  Mit Zitat antworten Zitat
Marco Steinebach

Registriert seit: 4. Aug 2006
491 Beiträge
 
Delphi 5 Enterprise
 
#4

AW: Breite/Zeichenanzahl bei Memofeldern?

  Alt 21. Jun 2016, 11:28
Hallo zusammen,
Meine Güte: warum umständlich, wenn es auch einfach geht. Dürfte die einfachste und sie nächste Lösung sein!
Vielen Dank noch mal und viele Grüße
Marco
Marco Steinebach
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#5

AW: Breite/Zeichenanzahl bei Memofeldern?

  Alt 21. Jun 2016, 11:39
guckst du hier!
oder mit
Delphi-Quellcode:
XXX.Canvas.TextWidth('Lorem ipsum dolor sit amet, consetetur sadipscing elitr');
XXX.Canvas.TextHeight('X');

Geändert von ibp (21. Jun 2016 um 11:45 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


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 05:02 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