Delphi-PRAXiS
Seite 1 von 2  1 2      

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/)
-   -   Delphi Memo, Texteingabebeschränkung (https://www.delphipraxis.net/65912-memo-texteingabebeschraenkung.html)

Igotcha 22. Mär 2006 10:09


Memo, Texteingabebeschränkung
 
Hallo zusammen,

ich habe gerade mit TMemo und SynEdit rumgespielt, doch noch keine Lösung für folgende Aufgabenstellung gefunden:

Ich brauche eine Möglichkeit, in einem Memo Text mit einer festen Zeichenbreite einzugeben, der auf 19 Zeilen und 40 Zeichen pro Zeile begrenzt ist. Wird beim Schreiben über das 40. Zeichen geschrieben, soll das komplette Wort in der nächsten Zeile beginnen. Selbstverständlich sollen auch nicht mehr als 19 Zeilen möglich sein.

Viele Grüße
Igotcha

Igotcha 23. Mär 2006 08:55

Re: Memo, Texteingabebeschränkung
 
Kleiner "push", da ich noch keine Lösung gefunden habe.

JWeis 23. Mär 2006 09:41

Re: Memo, Texteingabebeschränkung
 
Delphi-Quellcode:
memo1.maxlength:= 19*40
so kannst du den maximalen inhalt des memos festlegen


Delphi-Quellcode:
wordwarp:= true
word wird am ende in nächste zeile geschrieben


Zitat:

Zitat von Igotcha
Ich brauche eine Möglichkeit, in einem Memo Text mit einer festen Zeichenbreite einzugeben, der auf 19 Zeilen und 40 Zeichen pro Zeile begrenzt ist.

das weis ich leider nicht

Igotcha 23. Mär 2006 09:52

Re: Memo, Texteingabebeschränkung
 
Zitat:

Zitat von JWeis
Zitat:

Zitat von Igotcha
Ich brauche eine Möglichkeit, in einem Memo Text mit einer festen Zeichenbreite einzugeben, der auf 19 Zeilen und 40 Zeichen pro Zeile begrenzt ist.

das weis ich leider nicht

Wie ich die maximal Zeichenzahl gesamt und Zeilenumbruch am rechten Rand festlegen kann, das weiss ich ;-)

Ich brauche diese 40 Zeichen-Beschränkung deshalb, da das dann gespeicherte File in einer anderen Anwendung eingelesen wird, die erwartet, dass maximal 40 Zeichen in einer Zeile stehen und danach eine neue Zeile kommt, bis maximal 19 Zeilen.

Dazu würde ich dann den Inhalt des Memos per Lines[x] (mit maximal 40 Zeichen) manuell in eine Textdatei schreiben.

Gruß Igotcha

Grishnak 23. Mär 2006 09:58

Re: Memo, Texteingabebeschränkung
 
Du kannst per .CaretPos die Zeile/Spalte herausfinden, in denen sich der Cursor momentan befindet.
Wenn der Spalten-Wert 40 ist, musst du nun (z.B. im .OnChange-Ereignis) dafür sorgen, dass der Cursor in die nächste Zeile kommt. (gibt es nicht die Möglichkeit, einen "virtuellen" Tastendruck an eine Komponente zu schicken?).

Klaus01 23. Mär 2006 10:01

Re: Memo, Texteingabebeschränkung
 
wordwrap = true macht nur in der Darstellung im TMemo einen "Zeilenumbruch" -
liest man das TMemo dann aus gibt es nur eine lange Zeile.

Grüße
Klaus

Igotcha 23. Mär 2006 11:12

Re: Memo, Texteingabebeschränkung
 
Danke für die Kommentare erstmal, aber ich möchte mich ja gerade nicht manuell (also durch Cursorabfrage, o.ä.) darum kümmern müssen, ob ich in die nächste Zeile muss - vor allem was ist, wenn der Anwender ein Zeichen löscht ;-)

Gruß Igotcha

marabu 23. Mär 2006 11:21

Re: Memo, Texteingabebeschränkung
 
Den geringsten Aufwand verursacht sicherlich eine Prüfung auf Knopfdruck, nachdem der Text erfasst wurde. Dabei ist die Funktion WrapText() aus der Unit StrUtils sicher hilfreich.

Grüße vom marabu

TeronG 23. Mär 2006 11:33

Re: Memo, Texteingabebeschränkung
 
Zitat:

Zitat von Igotcha
.... das gespeicherte File in einer anderen Anwendung eingelesen wird ...

Wenn der Text eh erst gespeichert und dann wieder geladen wird dann kannste die Formartierung doch beim bzw. vorm Speichern erledigen. :gruebel:
Falls die Zeilenzahl dann zu groß wird musste hald ne Meldung ausgeben.
Evtl. nicht die schönste aber ne einfache Lösung ^^

Igotcha 23. Mär 2006 11:44

Re: Memo, Texteingabebeschränkung
 
Zitat:

Zitat von TeronG
Zitat:

Zitat von Igotcha
.... das gespeicherte File in einer anderen Anwendung eingelesen wird ...

Wenn der Text eh erst gespeichert und dann wieder geladen wird dann kannste die Formartierung doch beim bzw. vorm Speichern erledigen. :gruebel:
Falls die Zeilenzahl dann zu groß wird musste hald ne Meldung ausgeben.
Evtl. nicht die schönste aber ne einfache Lösung ^^

Nee, der Anwender soll einen Editor haben (wir haben das auch schon mit Word und Feldern probiert), in dem er in einer "Matrix" von 40*19 Text eingeben kann und zwar genau so, wie er nach dem Einlesen in die andere Anwendung auch dort erscheinen soll.

Du möchtest ja auch nicht, dass Word erst beim Speichern sagt, dass Du irgendwo zuviel Text eingegeben hast, o.ä. ;-)

Gruß Igotcha


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:29 Uhr.
Seite 1 von 2  1 2      

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