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/)
-   -   Memo Bricht in Lines um (https://www.delphipraxis.net/201310-memo-bricht-lines-um.html)

TomyN 10. Jul 2019 19:36

Memo Bricht in Lines um
 
Also,
eigentlich ist es ganz einfach.
Ich habe ein Memo, dem ich mit Add verschiedene Strings zuweise.
Code:
myMemo.Clear;
myMemo.Lines.Add('First Line');
i:= myMemo.Lines.Add('Something important');
myMemo.Lines.Add('***END***');
Nun möchte ich später irgendwann den zweiten Eintrag ersetzen, das mache ich ganz simple mit

Code:
myMemo.Lines[i]:= 'Even more important';
Das funktioniert auch wunderbar, solange das Memo keinen Zeilenumbruch macht, also wenn entweder der Text kurz genug ist oder myMemo.wordWrap auf FALSE gesetzt ist.
Im Netz finde ich immer nur den Hinweis, dass ein Umbruch im Memo keine Auswirkung auf die Lines hat, aber irgendwie funktioniert das nicht.
Übersehe ich was?

hoika 10. Jul 2019 19:48

AW: Memo Bricht in Lines um
 
Hallo,
ich würde das Memo nur zur Anzeige benutzen
und die Daten in einer StringList vorhalten.

Das Ersetzen erfolgt dann in der StringList
und per Memo.Lines.Assign dann zurück ins Memo.

TomyN 10. Jul 2019 19:58

AW: Memo Bricht in Lines um
 
Hi

Danke für den Tip. Das scheint einwandfrei zu funktionieren.
Bin aber dennoch etwas verwundert über das Verhalten des Memos.

Tomy

p80286 10. Jul 2019 21:22

AW: Memo Bricht in Lines um
 
Zitat:

Zitat von TomyN (Beitrag 1436453)
Bin aber dennoch etwas verwundert über das Verhalten des Memos.

Da es sich um eine Komponente zur Datenanzeige handelt, ist dieses Verhalten eigentlich irrelevant.
Relevant ist das Verhalten der Struktur, die der Datenhaltung dient, und da gibt es keine Möglichkeit von außen einzugreifen.

Gruß
K-H

TomyN 10. Jul 2019 21:31

AW: Memo Bricht in Lines um
 
Naja, nach meinem Verständnis bietet das Memo schon auch die Möglichkeit der Dateneingabe und auch einer Verwaltung ( Insert etc.. ) der zugewiesenen Daten, für mich schon Anzeichen einer 'Datenhaltung/Verwaltung'.

Ist halt Philosophie. Was mich wirklich wundert ist, dass im Netz immer behauptet wird, das die Anzeige die Stringlist (Lines) nicht verändern würde. Aber selbst bei einer Basisaufgabe einer Datenanzeige, nämlich der Reaktion auf eine geänderte Größe funktioniert diese Datenanzeigekomponente nicht korrekt....

p80286 10. Jul 2019 21:45

AW: Memo Bricht in Lines um
 
Zitat:

Zitat von TomyN (Beitrag 1436460)
Was mich wirklich wundert ist, dass im Netz immer behauptet wird, das die Anzeige die Stringlist (Lines) nicht verändern würde.

Zum einen ist die Wahrheit nicht demokratisierbar, will sagen wenn 99% der postings behaupten, das es bei Sonnenschein und einer Lufttemperatur von 25°C schneit ist das trotzdem Blödsinn.
Zum anderen werden die Daten, die angezeigt werden können, in einer TStrings kompatiblen Struktur abgelegt. das ist nicht dasselbe wie TStringlist!
(OK ist korinthenkackerisch verleitet abernicht zu vorschnellen Schlüssen)

Gruß
K-H

HolgerX 11. Jul 2019 04:19

AW: Memo Bricht in Lines um
 
Hmm...

Damit ein Memo die Zeilen NICHT an der sichtbaren Breite umbricht, stelle doch mal 'ScrollBars' auf 'ssBoth'...

Damit versucht dann das Memo die Textzeile komplett anzuzeigen und bricht erst sehr spät um..

TomyN 11. Jul 2019 06:53

AW: Memo Bricht in Lines um
 
Zitat:

Zitat von p80286 (Beitrag 1436461)
[

Zum anderen werden die Daten, die angezeigt werden können, in einer TStrings kompatiblen Struktur abgelegt. das ist nicht dasselbe wie TStringlist!
(OK ist korinthenkackerisch verleitet abernicht zu vorschnellen Schlüssen)

Gruß
K-H

Das Problem ist nicht die Nutzung von TStrings Lines ist ein TStrings-Objekt, so dass die TStrings-Methoden für Lines verwendet werden können, um Bearbeitungen, wie Zählen der Textzeilen sowie Hinzufügen, Löschen und Ersetzen von Zeilen, durchführen zu können. steht in der Dokumentation. Sondern das Problem ist, dass TMemo Strings nicht zum speichern der Daten sondern zum speichern der Anzeige nutzt.

DenkDirNix 11. Jul 2019 07:17

AW: Memo Bricht in Lines um
 
In einem TRichEdit konnte ich dieses Problem umgehen. Das sollte im TMemo analog funktionieren:

Code:
Memo.Lines.BeginUpdate;
Memo.WordWrap := false;
Memo.Lines[i] := ...
Memo.WordWrap := true;
Memo.Lines.EndUpdate;
Bin aber nicht sicher, wie sich das bei sehr großen Datenmengen auf die Laufzeit auswirkt.

Delphi.Narium 11. Jul 2019 10:03

AW: Memo Bricht in Lines um
 
Ein Memo hat die wunderliche Eigenschaft WordWrap.

Wenn man die im Objektinspektor (oder sonstwo im Quelltext) auf false setzt, findet keine automatischer Zeilenumbruch statt.

Der daraus resultierende Umbruch findet nur in der Anzeige statt. Auf die Eigenschaft von Lines (vom Typ TStrings) hat das keinen Einfluss.

Zitat:

Zitat von Delphi 7 Hilfe
VCL-Referenz
WordWrap (Eigenschaft von TCustomMemo)

TCustomMemo Siehe auch

Die Eigenschaft WordWrap bestimmt, ob der Text im Eingabefeld am rechten Rand umbrochen wird.

Delphi-Syntax:

property WordWrap: Boolean;

C++ Syntax:

__property bool WordWrap = {read=FWordWrap, write=SetWordWrap, default=1};

Beschreibung

Ist WordWrap auf true gesetzt, wird der Text im Eingabefeld entsprechend der Breite des Client-Bereichs am rechten Rand umbrochen. Der Umbruch wird lediglich auf dem Bildschirm angezeigt, der Text enthält keinerlei Zeilenumbrüche, die nicht explizit eingegeben wurden. Hat WordWrap den Wert false, wird eine separate Zeile nur dort angezeigt, wo explizit ein Zeilenumbruch in den Text eingefügt wurde.

Hinweis: Hat WordWrap den Wert true, wird keine horizontale Bildlaufleiste für das Eingabefeld benötigt.



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