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.Lines[irgendwas] - enthält Zeilenumbruch oder nicht? (https://www.delphipraxis.net/83315-memo-lines%5Birgendwas%5D-enthaelt-zeilenumbruch-oder-nicht.html)

simlei 30. Dez 2006 21:55


Memo.Lines[irgendwas] - enthält Zeilenumbruch oder nicht?
 
Hallo!
Ein leidiges Thema, denke ich, aber ohne das zu wissen komme ich nicht weiter:
In einem Memo wird ja automatisch Zeilenumbruch gemacht, wenn ein Absatz eben über die Breite des Memos geht. Wennnun über die Lines-Eigenschaft eine Zeile x angesprochen wird, so wird nicht etwa der ganze Absatz zurückgegeben, sondern nur die Zeile, wie sie im Memo steht - bis zum Umbruch. Nun ist dadurch nicht herauszufinden, ob Memo.Lines[x] Am Ende einen Umbruch hat oder nicht, da die Steuerzeichen nicht mit in dem String Memo.Lines[x] gespeichert sind (hab ich mal ausprobiert; einfach, da mit Length(string) auch Steuerzeichen erfasst werden)...

Wie kann ich nun herausfinden, ob nach einer besimmten Zeile eines Memos ein Zeilenumbruch folgt? Danke!

DGL-luke 30. Dez 2006 22:00

Re: Memo.Lines[irgendwas] - enthält Zeilenumbruch oder nicht
 
du meinst, ob das memo da automatisch umbricht?

dazu musst du wohl selber nachrechnen. -> MSDN-Library durchsuchengetTextExtent

simlei 30. Dez 2006 22:04

Re: Memo.Lines[irgendwas] - enthält Zeilenumbruch oder nicht
 
Hi!
Auf was wende ich diese Funktion an? Und was liefert sie zurück? (Die Länge des Absatzes? käme mir komisch vor, da dann aj für mehrere Zeilen ein und derselbe Wert zurückgegeben wird)

Danke schonmal.

3_of_8 30. Dez 2006 22:05

Re: Memo.Lines[irgendwas] - enthält Zeilenumbruch oder nicht
 
Die Zeilen eines Memos enthalten keine Zeilenumbrüche, einfach deshalb, weil die Zeilen einer StringList es auch nicht tun.

DGL-luke 30. Dez 2006 22:08

Re: Memo.Lines[irgendwas] - enthält Zeilenumbruch oder nicht
 
Die Antwort eines Mathematikers: Hat ewig gedauert, ist vollkommen exakt, und bringt niemandem was :)

@simlei: damit berechnest du, wie viel platz die zeile bräuchte. wenns mehr ist, als das memo breit ist, weißt du: da wird umgebrochen.

3_of_8 30. Dez 2006 22:13

Re: Memo.Lines[irgendwas] - enthält Zeilenumbruch oder nicht
 
Das kommt davon, wenn man den Topic-Titel liest und dann den Text überfliegt, kombiniert mit akutem Koffeinmangel

simlei 30. Dez 2006 22:15

Re: Memo.Lines[irgendwas] - enthält Zeilenumbruch oder nicht
 
Aha... Ich wende diese Funktion also auf zB Memo1.Lines[3] an. Aber da doch er Umbruch schon erfolgt ist und ich mit Memo1.Lines[3] nur einen Teil des gesamten Absatzes erhalte (so er denn automatisch umgebrochen ist), würde doch dieser String immer hinein passen (Da schon passend umgebrochen). Hab ich das jetzt falsch verstanden oder ganz falscher Ansatz?

DGL-luke 30. Dez 2006 22:21

Re: Memo.Lines[irgendwas] - enthält Zeilenumbruch oder nicht
 
Nö.

TextTextTextTextTextTextTextText[Enter]
TextTextTextTextTextTextTextTextTextText <--- automat. Umbruch
TextTextTextText[Enter]

wenn dein memo so aussieht, ist Lines.Count = 2. Du verstehst, was ich dir sagen will...?

Lannes 30. Dez 2006 22:24

Re: Memo.Lines[irgendwas] - enthält Zeilenumbruch oder nicht
 
Hallo,

werfe mal folgendes in die nette Unterhaltung :mrgreen: :

In Lines[x] ist der Zeilenumbruch nicht enthalten, den kann man aber aus Memo.Text auslesen.

:arrow: Feststellen bei welchem Zeichen die nächste Zeile anfängt, dann aus .Text die Zeichen davor prüfen.

Delphi-Quellcode:
function IsWordWrap(M: TMemo;iLine: Integer): Boolean;
var i : Integer;
begin
  Result := False;
  i := M.Perform(EM_LINEINDEX, iLine+1, 0);
  if ord(M.Text[i-1]) <> 13 then
    Result := True;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsWordWrap(Memo1,0) then//erste Zeile
    showmessage('Umbruch in Zeile 1 (Index 0) durch WordWrap');
end;

simlei 30. Dez 2006 22:27

Re: Memo.Lines[irgendwas] - enthält Zeilenumbruch oder nicht
 
Sry Luke, habs irgendwie net gecheckt :/
Der Coide von Lannes ist aber gut, funktioiert! Danke! Ich hatte auch die Idee, dass die Steuerzeichen ja in Memo.Text enthalten sind, aber ich wusste nicht, dass man von einem bestimmten Stelle in .Lines auf eine Stelle in .Text schließen kann...


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