Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Memo [D7, XP]


kyran29 ©   (2009-10-09 07:21:00) 

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


MonoLife   (2009-10-09 10:22:00) [1]


Var
sslen, rslen: integer;
begin
rslen:=Memo1.Perform(EM_LINEFROMCHAR, Memo1.SelStart, 0);
sslen:=SendMessage(Memo1.Handle, EM_LINEINDEX, rslen, 0);
Memo1.SelStart:=sslen;
Memo1.SelLength:=Length(Memo1.Lines.Strings[rstart]);
Memo2.Lines.Add(Memo1.SelText);
end;

во, типа такого..


MonoLife   (2009-10-09 10:10:00) [2]

Не, фигня получилась:)


MonoLife   (2009-10-09 08:33:00) [3]


> kyran29 ©   (09.10.09 07:21)  

...
Var
 sslen, rslen: integer;
begin
 rslen:=Memo1.Perform(EM_LINEFROMCHAR, Memo1.SelStart, 0);
 sslen:=SendMessage(Memo1.Handle, EM_LINEINDEX, rslen, 0);
 Memo1.SelStart:=sslen;
 Memo1.SelLength:=Memo1.SelStart+Memo1.SelLength;
 Memo2.Lines.Add(Memo1.SelText);
end;


MBo   (2009-10-09 07:44:00) [4]

хм... вроде вчера отвечал на это же...

Логика же простая - находим строку, в которой стоит курсор, и если длина выделения достаточная, то копируем ее.


Наверх

Титульная страница Поиск, карта сайта Написать письмо