![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
StringVar + RichEdit.Selection+ StringVar2 [Delphi, Windows]
Solo © (2004-11-22 09:26:00)Добрый день!
Имеем RichEdit.
Выделяем в нем слово, или фразу, или абзац, нажимаем на кнопку - выделение должно замениться на то же самое, только с левой и с правой стороны добавляются теги (допустим, html-редактор). Привожу простейший код:
procedure TForm1.acTagExecute(Sender: PObj);
var Old_s, // старая строка (заменяемая)
New_s, // будущая строка (заменяющая)
otk_tag, zak_tag : String; // Открывающий и закрывающий теги
begin
// Жирный шрифт (к примеру)
otk_tag := ' '; //Это будет открывающий
zak_tag := ''; //А это - закрывающий
Old_s := RichEdit1.Selection; //Инициализируем старую строку
New_s := otk_tag + Old_s + zak_tag; // откр+выделение+закр
RichEdit1.ReplaceSelection(New_s, true);//вставляем новую строку
end;
В результате выделение заменяется на "Открывающий тег"Само выделение - И... ВСЕ! Закрывающий тег не вставляется. Вернее, он вообще не прибавляется, и New_s у нас вместо ожидаемого otk_tag + Old_s + zak_tag равно otk_tag + Old_s + фигу с маслом.
RichEdit1.Selection имеет тип "String", значит, ни с каким чаром - пчаром заморочек тут нет. Если присваивать переменной Old_s какую нибудь строку от руки (Old_s := 'Какая-нить строка'), тогда все нормально...
Может, тип KolRichEdit.Selection имеет тип String, но другой какой нибудь, не совсем стринговый :)?
Solo (2004-11-23 09:57:00) [1]Спасибо, Андрей, Вы были правы. Селекшн - точно, нуль-терминальный... Все получилось! Какая досада...
Андрей (2004-11-22 12:30:00) [2]Похоже, RichEdit1.Selection заканчивается #0, а RichEdit1.ReplaceSelection(New_s, true) вставляет только до #0.
Попробуй проверять последний символ Old_S на #0 и отрезать его, если так.
Solo (2004-11-22 09:32:00) [3]Добавление: Черт, про теги я не подумал, что в хтмл-е они не отобразяться...
Но вы, думаю, поняли, что там должно быть. В принципе, разницы нет. Открывающая строка и закрывающая могут быть любыми. Главное, что закрывающая слетает...