![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вставка текста в RichEdit (курсор за текстом) [D6, D7, Win95/98, WinME, NT4, Win2k, WinXP]
Delph © (2004-11-11 03:49:00)Ответьте пожалуйста на такой вот вопрос. Мне надо при нажатии Control+Enter вставлять в RichEdit текст (те добавлять строку) и необходимо, чтобы курсор оставался в конце вставленного текста.
Делаю так:
if (ssCtrl in Shift) then begin
RichEdit1.Lines.Add('Привет');
Key:=8;
end;
но вот, что происходит:
строка вставляется, а курсор переходит на строку ниже. Пробовал в коде программы добавлять ещё раз Key:=8 но не помогает. Прошу отнестись к просьбе серьёзно. Интересуют различные варианты. Заранее благодарен.
Gloomer (2004-11-11 13:01:00) [1]Примерное решение:
procedure TForm1.RichEdit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var sel:integer;str:string;
begin
if ((ssCtrl in Shift) and (Key=13))then begin
sel:=RichEdit1.SelStart;
str:=#13#10'Привет';
RichEdit1.Text:=Copy(RichEdit1.Text,1,RichEdit1.SelStart)+str+Copy(RichEdit1.Text,RichEdit1.SelStart+1,length(RichEdit1. Text));
RichEdit1.SelStart:=sel+length(str);
end;
end;
Семен Сорокин (2004-11-11 10:29:00) [2]
> Есть ещё предложения?
см. SelStart
Delph (2004-11-11 10:28:00) [3]---------------------
Семен Сорокин
---------------------
Меня интересует вариант с Addт.е. как можно выйти из проблемы - перенести указатель в конец добавленного текста. (текст я не выделяю и тд тоесть надо вставлять предопределённое слово). Спасибо за ответ.
Есть ещё предложения?
Семен Сорокин (2004-11-11 08:46:00) [4]SelStart, SelLength, SelText + F1;
RichEdit1.Lines.Add('Привет'); - добавляет строчку с конечными спец. символами (возврат каретки), поэтому курсор переходит на след строку.