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 Zeilen hart umbrechen? (https://www.delphipraxis.net/146482-memo-zeilen-hart-umbrechen.html)

himitsu 20. Jan 2010 21:49


Memo Zeilen hart umbrechen?
 
n'abend

Die TMemos brechen doch nur an Wortgrenzen um,
aber ich will, daß notfalls ein Wort/Zeichenkette rechts am Memoende getrennt wird.

WordWrap=True und ScrollBar abstellen helfen leider nicht.


Notepad kann es auch, also muß es irgendwie gehn.

toms 20. Jan 2010 21:54

Re: Memo Zeilen hart umbrechen?
 
Ich sehe keinen Unterschied im Memo / Notepad..Wie kann man das testen :cyclops:

himitsu 20. Jan 2010 22:00

Re: Memo Zeilen hart umbrechen?
 
Mach mal bei Menü\Format\Zeilenumbuch das Häkchen hin.

Schon kann kein Text mehr rechts "überstehn".
Und das will ich im TMemo haben

[edit]
grad nochmal in 'nem leeren Projekt getestet und da geht's :shock:


[edit]
arg, hier ist ein NOT zuviel :wall:
Delphi-Quellcode:
Procedure TForm1.CheckBox9Click(Sender: TObject);
  Begin
    If CheckBox9.Checked Then Memo1.ScrollBars := ssVertical
    Else Memo1.ScrollBars := ssBoth;
    Memo1.WordWrap := not CheckBox9.Checked;
  End;

p80286 21. Jan 2010 09:51

Re: Memo Zeilen hart umbrechen?
 
Du bist Dir aber darüber im klaren, daß Du Dir damit ein paar CRLF einhandelst?

Gruß
K-H

Ralf Kaiser 21. Jan 2010 10:49

Re: Memo Zeilen hart umbrechen?
 
Zitat:

Zitat von p80286
Du bist Dir aber darüber im klaren, daß Du Dir damit ein paar CRLF einhandelst?

Der Umbruch in einem TMemo ist rein optischer Natur! Da werden keine CRLFs eingefügt. Oder habe ich dich da jetzt falsch verstanden?

himitsu 21. Jan 2010 10:57

Re: Memo Zeilen hart umbrechen?
 
Im inneren Text gibt des diese zusätzlichen CRLF nicht. Und man den Zeilenumbruch wieder abschaltet, dann sind diese extern auch nicht mehr vorhanden.
Es ist nur für die Anzeige und intern interessiert mich der Text überhaupt nicht,
bis auf die Position des letzen Zeichens und hierfür sind diese zusätzlichen CRLF unbedeutend.
Das ist nur für das Outputfenster da links unten http://www.delphipraxis.net/internal...121847#1121847

Selbst das Speichern läuft über einen externen Stream und nicht über das Memo selbst ab, da sonst einige Sonderzeichen Probleme machen und im Memo rausgefiltert wurden.

@Alfi001: Wenn ich mich richtig erinnere, dann sind diese "zusätzlichen" CRLF in .Text und .Lines enthalten, da man dort die "Formatierung" der Anzeige zurückbekommt.

p80286 21. Jan 2010 11:12

Re: Memo Zeilen hart umbrechen?
 
Beim Auslesen der Memodaten bin ich schon mal vor diese Wand gelaufen.
(Es gab auf einmal ein paar Zeilen mehr)
Da es aber nur für die Anzeige ist, kann man es gut ignorieren.

@ALFI Zumindestens der Notepad scheint die "Originaldaten" im Hintergrund zu behalten. das TMemo wäre dann nach meiner Erfahrung nur die dumme Oberfläche.

[Überlegung: Wie wirktsich das jetzt auf select und replace aus??]

Gruß
K-H

Ralf Kaiser 21. Jan 2010 11:15

Re: Memo Zeilen hart umbrechen?
 
Zitat:

Zitat von himitsu
@Alfi001: Wenn ich mich richtig erinnere, dann sind diese "zusätzlichen" CRLF in .Text und .Lines enthalten, da man dort die "Formatierung" der Anzeige zurückbekommt.

Nein. Eigentlich nicht. In .Lines und .Text steht der Text exakt so wie er geladen oder eingetippt wurde (inklusive geladener/getippter CRLF). Der Umbruch wird nur durch die Breite des Memos bestimmt, die sich ja auch ändern kann.

Ansonsten müsste da Memo ja irgendeinen Mechanismus haben der zwischen getippten und "umbruchbedingten" CRLF unterscheidet. Diese "umbruchbedingten" CRLF müssten dann bei einer Änderung der Breite gelöscht oder an anderer Stelle neu eingefügt werden. .Text und .Lines ändert sich nicht wenn man die Breite des Memos verändert (z.B. Memo auf alClient und dann Fenstergrösse ändern).

himitsu 21. Jan 2010 11:21

Re: Memo Zeilen hart umbrechen?
 
nimm ein Memo und mach in OnChange nur mal das rein
Delphi-Quellcode:
Caption := IntToStr(Memo1.Lines.Count);
jetzt einfach nur noch z.B. die "a"-Taste festhalten und warten.

Es sollte sich an der Anzahl der Zeilen demnach ja nix ändern, tut es aber. ;)

PS: beim Speichern
- BeginUpdate
- Zeilenumbruch deaktiveren
- SaveToFile
- Zeilenumbruch eventuell wieder aktiveren
- EndUpdate

Ralf Kaiser 21. Jan 2010 11:50

Re: Memo Zeilen hart umbrechen?
 
Zitat:

Zitat von himitsu
nimm ein Memo und mach in OnChange nur mal das rein
Delphi-Quellcode:
Caption := IntToStr(Memo1.Lines.Count);
jetzt einfach nur noch z.B. die "a"-Taste festhalten und warten.

Stimmt!! :wall: (und ich war mir so sicher, habs aber nicht ausprobiert :? )

Das kommt davon, wenn man relativ wenig mit den Standardkomponenten arbeitet! Ich habe da einige "memoartige" Komponenten mit dennen ich normalerweise arbeite bei denen das nämlich genau so ist wie ich es beschrieb. Asche auf mein Haupt!! (ich will einen "asche-auf-mein-haupt Smiley!!!)


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