Entwickler-Ecke

Delphi Language (Object-Pascal) / CLX - Zeilenumbruch durch WordWrap erkennen


Coder - Mi 22.02.06 18:16
Titel: Zeilenumbruch durch WordWrap erkennen
Hi
Ich benutze ein JvRichEdit.
Nun will ich rausfinden ob eine Zeile durch #13#10 oder durch WordWrap umgebrochen wird.
Dazu hab ich folgenden Code

Delphi-Quelltext
1:
2:
if Copy(Editor.Lines[0], Editor.GetLineIndex(0) + Length(Editor.Lines[0]) - 22) = #10#13 then
  //Kein WordWrap

Doch so einfach scheint das nicht zu gehen. :?
Gibt es da eine Möglichkeit?
Zur Not könnte ich WordWrap auch kurzzeitig ausmachen. :gruebel:


Lannes - Mi 22.02.06 19:56

Hallo,

in Lines[x] ist der Zeilenumbruch nicht enthalten, die kann man nur aus RichEdit.Text auslesen.
Also musst Du feststellen bei welchem Zeichen die nächste Zeile anfängt, dann aus .Text die Zeichen davor prüfen.
Der Code wird vermutlich im JvRichEdit auch funktionieren:

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
function IsWordWrap(RE: TRichEdit;iLine: Integer): Boolean;
var i : Integer;
begin
  Result := False;
  i := RE.Perform(EM_LINEINDEX, iLine+10);
  if ord(RE.Text[i-1]) <> 13 then
    Result := True;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
  if IsWordWrap(RichEdit1,0then//erste Zeile
    showmessage('Umbruch Durch WordWrap');
end;


Coder - Do 23.02.06 01:36

Hi
Danke für deine Antwort!
Bei einem RichEdit funktioniert es, aber nich bei einem JvRichEdit. :(
Er zeigt immer an das durch WordWrap umgebrochen wurde.
Auch wenn man i := RE.GetLineIndex(iLine+1); benutzt.
Wies aussieht kann man das bei einem JvRichEdit nicht rausfinden.