Форум — Ответы ( К темам )
? | SKh: Подскажите как узнать месторасположение курсора (08-01-2003 19:40:32) |
Подскажите как узнать месторасположение курсора в текстовом поле RichEdit или Memo и как заставить его перейти в заданную позицию? Заранее благодарен | |
Владимир (08-01-2003 22:23:56) | |
// что касается получения позиции курсора, то это можно так void __fastcall TForm1::Button1Click(TObject *Sender) { long LineNum; long CharNum; LineNum = Memo1->Perform(EM_LINEFROMCHAR, Memo1->SelStart, 0); CharNum = Memo1->Perform(EM_LINEINDEX, LineNum, 0); Label1->Caption = IntToStr(LineNum+1)+" : "+IntToStr((Memo1->SelStart-CharNum)+1); } | |
Владимир (08-01-2003 23:04:43) | |
TPoint tp = Memo1->CaretPos; Label1->Caption = IntToStr(tp.x)+" : "+IntToStr(tp.y); | |
Владимир (08-01-2003 23:42:56) | |
Это если нужны позиции по х у, а если вообще номер символа то long lg = Memo1->SelStart; а установить курсор в заданную позицию Memo1->SelStart = ... SelStart — указывает позицию первого выделенного символа в тексте, или, если выделения текста нет, то позицию курсора | |
SKh (09-01-2003 05:42:00) | |
Большое спасибо!
| |
Владимир (13-01-2003 19:23:15) | |
// Да, и еще , так можно установить курсор в позицию по X,Y //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { MemoCursor(Memo1, 1, 5); // вместо 1,5 выберите нужную позицию } //--------------------------------------------------------------------------- void MemoCursor(TMemo* Memo, int X, int Y) { Memo-> SetFocus(); Memo-> SelStart = SendMessage (Memo-> Handle, EM_LINEINDEX,X, 0)+ Y — 1; PostMessage(Memo -> Handle,WM_KEYDOWN,VK_LEFT,0); PostMessage(Memo -> Handle,WM_KEYDOWN,VK_RIGHT,0); } //--------------------------------------------------------------------------- |