Question and Answer Database FAQ2602C.txt Caret position in TMemo vs. TRichEdit Category :VCL Platform :All Product :C++Builder ALL Question: How can I display the position of the caret with a TMemo component or a TRichEdit component? Answer: The implementation is different in each case. In TMemo this code will work: TPoint Point; GetCaretPos(&Point); DWORD both; both = Memo1->Perform(EM_CHARFROMPOS, 0, MAKELPARAM(Point.x, Point.y)); int indexLine = HIWORD(both); int indexLength = LOWORD(both) — Memo1->Perform(EM_LINEINDEX, -1, 0); indexLine++; indexLength++; char RowCol[10] = " "; sprintf(RowCol, "%d:%d", indexLine, indexLength); StatusBar1->Panels->Items[4]->Text = RowCol; In TRichEdit, the previous code would produce an access violation when using EM_CHARFROMPOS. This code will work for TRichEdit: TPoint Point; GetCaretPos(&Point); DWORD both = 0; both = MAKELPARAM(Point.x, Point.y); int indexLine = RichEdit1->Perform(EM_LINEFROMCHAR, -1, 0); int indexLength = (LOWORD(both)/8) + RichEdit1->SelLength; indexLength++; indexLine++; char RowCol[10] = " "; sprintf(RowCol, "%d:%d", indexLine, indexLength); StatusBar1->Panels->Items[4]->Text = RowCol; 7/2/98 10:32:32 AM
Last Modified: 01-SEP-99