RichEdit1.SetFocus();
RichEdit1.SelStart = НоваяПозиция;
RichEdit1.SelLength = 0;
Позиционирование курсора
Как можно поменять позицию курсора в RichEdit при щелчке правой кнопки мыши? Спасибо.
Цитата:
Originally posted by Belka
Как можно поменять позицию курсора в RichEdit при щелчке правой кнопки мыши? Спасибо.
Как можно поменять позицию курсора в RichEdit при щелчке правой кнопки мыши? Спасибо.
Поменять позицию курсора можно так:
Код:
Цитата:
Originally posted by SLA
Поменять позицию курсора можно так:
Поменять позицию курсора можно так:
Код:
RichEdit1.SetFocus();
RichEdit1.SelStart = НоваяПозиция;
RichEdit1.SelLength = 0;
RichEdit1.SelStart = НоваяПозиция;
RichEdit1.SelLength = 0;
Спасибо. Но проблема в том, что SelStart - это позиция символа в RichEdit1, а в обработчике OnMouseDown есть только координаты щелчка мыши в пикселях. Как тут быть?
void __fastcall TChild::RichEdit1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(Button == mbRight)
RichEdit1 -> SelStart = 40; // ?
}
Цитата:
Originally posted by Belka
Спасибо. Но проблема в том, что SelStart - это позиция символа в RichEdit1, а в обработчике OnMouseDown есть только координаты щелчка мыши в пикселях. Как тут быть?
void __fastcall TChild::RichEdit1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(Button == mbRight)
RichEdit1 -> SelStart = 40; // ?
}
Спасибо. Но проблема в том, что SelStart - это позиция символа в RichEdit1, а в обработчике OnMouseDown есть только координаты щелчка мыши в пикселях. Как тут быть?
void __fastcall TChild::RichEdit1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
if(Button == mbRight)
RichEdit1 -> SelStart = 40; // ?
}
void __fastcall TChild::RichEdit1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y)
{
POINT Point;
int CharIndex;
if(Button == mbRight)
{
Point.x = X;
Point.y = Y;
CharIndex = (int) SendMessage(RichEdit1->Handle, EM_CHARFROMPOS, NULL, (LPARAM) &Point);
}
}
Работает! :)