ОБСУЖДЕНИЕ

Memo

5 ответов 5,9 тыс.
AI-выжимка обсуждения скоро

Краткие тезисы обсуждения со ссылками на ключевые ответы появятся здесь.

Автор темы
:) Добрый день!
Вопрос мой заключается вот в чем.
При выделении и копировании строк из одного поля Memo во второе поле Memo2.Lines.Add(Memo1.SelText). Это понятно!
Но как только курсор находится не вначале строки IntToStr(Memo1.SelStart) > 0
Копируется обрезанная строка, т.е. с того места, откуда начали выделять строки.
Как вернуть ту часть строки, которая не была выделена? Так же при окончании выделения. Если в строке выделено >= 3 символов, то выделяем целую строку, если < 3 выделение с этой строки выделение снимаем. Скопированные строки во втором поле Memo должны быть целые.
 

Вложения

  • Memo.jpg
    Memo.jpg
    29,5 КБ · Просмотры: 582
memo2.lines.add(memo1.lines[memo1.CaretPos.y]);
 
;) Спасибо Vital.
Можно подробней.
 
Эмм.. А что подробнее? Этот код добавляет в Memo2 ту строку из Memo1 на которой находится Курсор. Все.
 
Vital
Этот код добавляет в Memo2 ту строку из Memo1 на которой находится Курсор


При выделении строк, т.е. выделяем ни одну строку, а несколько. Не полными строки могут быть первая и последняя см. рис. Копируем все, но если строки первая и последняя выделены не полностью, добавляем, то, что не выделено и в первой строке и в последней.
 
Код:
procedure TForm1.Memo1OnMouseDown(Sender: TObject);
begin
if Memo1.SelLength > 0 then запоминаешь y(игрек) позицию каретки как показано выше- это начальная строка
end;
Далее
Код:
procedure TForm1.Memo1OnMouseUp(Sender: TObject)
begin
копируешь во второй мемо текст из мемо 1 от ранее запомненной строки до строки где теперь находится каретка.
end.