Zeile in Memo ermitteln

sgdiablo

Grünschnabel
Hallo

Ich bin Anfänger in der Programmierung mit Borland Builder. Jetzt habe ich das Problem die Zeilennummer einer markierten Zeile in einem Memo zu ermitteln.
Kann mir da jemand weiterhelfen?

Gruß
sgdiablo
 
Hy...

also ich hab gerade mal geguckt und festgestellt, das es keine Methode gibt um die Zeilennummer in einem Memo geliefert zu bekommen. :(

Vielleicht gibts ne Alternative. Wozu genau brauchst du die Zeilennummer, bzw. was willst du damit machen?

Oder, wenns wirklich nicht anders geht, kannst du dir natürlich immernoch selbst ne Funktion schreiben. (--> Könntest den Text bis zum Courser kopieren und dann einfach die Gesamtzeilen zählen... dann weißt Du ja auch in welcher Zeile du dich befindest...)
 
Also zum Ermitteln der Zeilennummer eines markierten Textes habe ich auch nichts Vorgefertigtes gefunden. Aber als selbstgestrickte Methode würde ich wohl so vorgehen:

- TMemo.Lines[] durchlaufen
- Jede einzelne TMemo.Lines[x] mit dem markierten Text vergleichen (es hieß ja, daß eine ganze Zeile markiert ist).
- Bei Übereinstimmung: X + 1 ist die gesuchte Zeilennummer.
 
Ist aber problematisch wenn es mehrere Zeilen gibt die diesen Text beinhalten.
Ich mag dich nicht. :)
Vor allem, weil du Recht hast. ;)
In dem Falle bliebe dann fast nur noch, eine Wrapperkomponente über die bestehende TMemo zu basteln oder gleich eine eigene TMemo, die genau diese Funktionalität beinhaltet. Letzteres sollte eigentlich kein unlösbares Problem sein.
 
Hallo,

da bei mir nie zwei Zeilen den gleichen Text enthalten, habe ich die Lösung mit dem Vergleich eingebaut. Ist zwar bestimmt nicht die eleganteste Lösung, aber immerhin funktioniert es gut.

Gruß
sgdiablo:)
 
Hallo zusammen,

so geht es natürlich auch:

Code:
void __fastcall TForm1::Memo1Click(TObject *Sender)
{
int Zeile;

Zeile = SendMessageA(Memo1->Handle, EM_LINEFROMCHAR, Memo1->SelStart, 0);
Edit1->Text = IntToStr(Zeile+1);
}
 
Zurück