Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > TMemo


Автор: Domain 19.3.2010, 09:25
Всем привет. У меня возникла такая ситуация, когда в компоненте TMemo нужно сделать следующее: должна быть строчка, которую пользователь не может редактировать(стирать, вырезать и т.д.), но после этой строчки может писать текст все, что пожелает. Как реализовать подобную тему. Может посоветуете другой подход к реализации данной задачи.

Автор: Данкинг 19.3.2010, 11:17
При клике на эту строчку делай Memo->ReadOnly. При выходе - наоборот.

Автор: Domain 19.3.2010, 13:03
Ну не все так просто. Например в одной строке, пример: "стирать нельзя" >> "можно писать" и все это в одной строке, как например в консоли
. 

Автор: vikaz 19.3.2010, 13:37
Просто так все это сделать не получиться, компонент не предназначен для таких ограничений на ввод. 
Вот предложения:
1. Создать массив StringList и согласовать его с событиями TMemo (клик мыши, перемещение кнопок и т.д. и т.п). В зависимости от манипуляции, производить определенные действия со строками StringList, а после этого перерисовывать Memo. Но это может привести к проблемам, при слишком большой объеме данных, будет видно перерисовку.
2. Доработать механизм, который предложил камрад, ранее. При перемещении по строке, парсить только её и проверять, можно ли в определенном месте вводить данные.

Автор: xvr 19.3.2010, 14:43
Замени TMemo на TRichEdit, выдели свою строчку и поставь атрибут RichEdit->SelAttributes->Protected=true;

Автор: Domain 22.3.2010, 09:33
Спасибо xvr, помогло

Автор: Domain 22.3.2010, 10:09
только что теперь мне придется все время выделять текст и делать что-то подобное? можно как-то это автоматизировать?

Автор: xvr 22.3.2010, 14:35
Цитата(Domain @ 22.3.2010,  10:09)
только что теперь мне придется все время выделять текст и делать что-то подобное? 

Угу
Цитата

можно как-то это автоматизировать?
Угу. Атрибуты SelStart и SelLength

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)