Aktuelle Zeilennummer im TMemo ermitteln
-
Hallo zusammen,
habe ein Routine zum Ermitteln der Zeilennummer geschrieben (bei Doppelklick auf eine Zeile im Memofeld):void __fastcall TForm1::frm1_mem8_HistorieDblClick(TObject *Sender) {Integer i2,i3=0,iMax; AnsiString z1,z2; // Vars lokal halten i2 =frm1_mem8_Historie->SelStart; // aktuelle Cursorposition iMax=frm1_mem8_Historie->Lines->Count; // Anzahl Zeilen im Memo for(int i1=0;i1<iMax;i1++) { // alle Zeilen auslesen z1=frm1_mem8_Historie->Lines->Strings[i1]; // Zeile auslesen i3+=z1.Length(); if(i3>=i2) { z2=IntToStr(i1+1); z1=frm1_mem8_Historie->Lines->Strings[i1]; break; } // Zeile erreicht, merken und raus i2-=2; // CursorPos -2 Zeichen pro Zeile wegen CR+LF } // ende for(i1 ShowMessage("Zeile: "+z2+"\rCursor: "+IntToStr(i2)+"\r\rText:\r"+z1); // Info geben }Frage: Geht das nicht einfacher?
Konnte weder hier noch im Google was dazu finden...Gruss Stefan
-
Label1->Caption = IntToStr(SendMessage(Memo1->Handle,EM_LINEFROMCHAR,Memo1->SelStart,0)+1);
-
oder einfacher:
Label1->Caption = IntToStr(Memo1->CaretPos.y+1);
-

Die guten alten API Funktionen...

Ich danke Dir und schäme mich...Mit CaretPos ist natürlich noch genialer.
Da kann ich mich wenigstens rausreden,
daß ich C++ noch nicht so lange programmiere...
Gruss Stefan