Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - RichEdit Zeilennummer


colaka - Sa 01.01.11 10:50
Titel: RichEdit Zeilennummer
Hallo,

ich habe mir mit Hilfe von Richedit einen kleinen Editor geschrieben und möchte in der Statusbar gerne eine Anzeige wie "Zeile Nr X von Zeilenanzahl" haben.

Die Zeilenanzahl ist kein Problem. Ich erhalte sie mit:

Delphi-Quelltext
1:
  FHaupt.StatusBar.Panels.Items[3].Text := IntToStr(RichEdit.Lines.Count);                    


Aber für die Zeilennummer finde ich keine vorgefertigte Eigenschaft.

Oder wie könnte man das Problem lösen?

Danke Ebi


ssb-blume - Sa 01.01.11 10:58

Such mal unter GetLineIndex!
Hansi


bummi - Sa 01.01.11 11:02

Richedit.ActiveLineNo

0-basiert


colaka - Sa 01.01.11 11:09

Hallo,

vielen Dank für die schnellen Antworten, aber sowohl mit GetLineIndex wie auch mit ActiveLineNo erhalte ich die Fehlermeldung "undefinierter Bezeichner".

Muß ich da vielleicht noch irgendeine Unit einbinden?

Gruß Ebi


Gerd Kayser - Sa 01.01.11 11:11

Das könnte Dir eventuell weiter helfen: http://www.delphi-forum.de/viewtopic.php?t=102271&highlight=emgetlinecount


bummi - Sa 01.01.11 11:15

@colaka
hab leider grade nur Delphi 2010 zum spicken, sorry.


colaka - Sa 01.01.11 13:02

Hallo,

ich habe jetzt stundenlang das Forum und Google durchsucht, aber immer noch keinen Lösungsansatz gefunden. Es gibt zwar Lösungen, wie die mit GetLineIndex, aber die beziehen sich nicht auf die Standard-RichEdit-Komponente, sondern auf RxRichEdit oder JvRichEdit. Die scheint es aber beide nicht als einzelne Komponente, sondern nur in riesigen Komplettpaketen zu geben. Das will ich mir nicht unbedingt antun.

Auf der anderen Seite kann ich mir nicht so recht vorstellen, daß es für das normale RichEdit keine Möglichkeit geben soll, um festzustellen, in welcher Zeile der Cursor steht.

Danke Ebi


Stundenplan - Sa 01.01.11 13:51

Also das (http://www.swissdelphicenter.com/de/showcode.php?id=165) funktioniert bei mir einwandfrei!


Delphi-Quelltext
1:
2:
3:
4:
function RichRow(m: TCustomMemo): Longint;
begin
  Result := SendMessage(m.Handle, EM_LINEFROMCHAR, m.SelStart, 0);
end;


EDIT: Oder in RichEdit.CaretPos.Y steht die Zeile auch!

Viele Grüße,
Stundenplan.


colaka - Sa 01.01.11 14:11

Ja,

danke. Jetzt habe ich es auch hinbekommen