Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.11.05;
Скачать: CL | DM;

Вниз

Как сохранить цветовое выделение текста в TRichEdit?   Найти похожие ветки 

 
Alex_C ©   (2006-09-25 13:41) [0]

Есть TRichEdit в котором цветом автоматически выделяются ключевые слова. При добавлении нового текста в конец иимеющегося
RichEd.Text := RichEd.Text+IputChar;
цветовое выделение теряется и приходится снова весь текст просматривать и выделять ключевые слова. Как можно этого избежать?
Есть такой вариант, при котором не теряется цветовое выделение текста:
RichEd.SelStart := Length(RichEd.Text);
RichEd.SelLength := 0;
RichEd.SelText := InputChar;
но он не подходит ввиду того, что не позволяет в это время пользователю самому выделять текст.


 
clickmaker ©   (2006-09-25 14:01) [1]


> не позволяет в это время пользователю самому выделять текст

то есть? У тебя RichEd.SelText := InputChar; в отдельном потоке, да еще так долго, что пользователь может успеть что-то выделить?


 
Alex_C ©   (2006-09-25 14:17) [2]

Поясню ситуацию:
из устройства данные выводятся на RichEdit. Пользователь же в это время должен иметь возможность выделить допустим кусок текста и скопировать его. Данные с ус-ва поступают постоянно. Если пользоваться 2 методам, то у пользователя не получается выделить текст - SelStart то все время меняется.


 
clickmaker ©   (2006-09-25 14:27) [3]


> не получается выделить текст - SelStart то все время меняется

а сохранить, а потом восстановить?


 
Alex_C ©   (2006-09-25 14:29) [4]

Некрасиво получается. Вот представь - все время добавляется из ус-ва информация. Сохранять и восстанавливать SelStart - все время выделение мигает, пока пользователь выделяет текст.


 
clickmaker ©   (2006-09-25 14:35) [5]

а RichEdit.Lines.Add не поможет?


 
Alex_C ©   (2006-09-25 15:16) [6]

Нет
При этом добавляется НОВАЯ строка, а мне надо чтоб было продолжение существующей.


 
clickmaker ©   (2006-09-25 15:19) [7]

Ну звиняй, варианты кончились.
Разве что попробовать [3], но окружить вызовами
SendMessage(RE.Handle, WM_SETREDRAW, 0, 0);
...
SendMessage(RE.Handle, WM_SETREDRAW, 1, 0);
чтобы не мерцало


 
Alex_C ©   (2006-09-25 15:31) [8]

А вот интересно, где у RichEdit хранится информация об аттрибутах каждой буквы? По идее ведь каждая буква может свой цвет, фонт и т.п. иметь? В св-ве Text хранится только сам текст, а где хранятся аттрибуты каждой буквы?


 
clickmaker ©   (2006-09-25 15:37) [9]


> [8] Alex_C ©   (25.09.06 15:31)

с точки зрения программера в SelAttributes
ну а так, это часть формата RTF. В тэгах. В этом смысле ртф слегка напоминает html


 
Alex_C ©   (2006-09-25 16:45) [10]

Видел как работают другие программы. В них все очень быстро и подсветка синтаксиса, и позволяют добавлять текст, сохраняя аттрибуты старого текста. Вроде простая задама, а вот в инете порылся - решения простого для нее нет.


 
clickmaker ©   (2006-09-25 16:47) [11]


> [10] Alex_C ©   (25.09.06 16:45)

другие программы могут и не использовать richedit


 
Alex_C ©   (2006-09-25 17:06) [12]

свой компонент?
не понятно зачем так сделано, чтоб при добавлении текста все аттрибубы что были менять на исходные.


 
clickmaker ©   (2006-09-25 17:14) [13]

RichEd.Text := RichEd.Text+IputChar;
этой строчкой ты фактически полностью меняешь содержимое, причем, именно текст, а форматирование естесственно теряется.
Как вариант можно попробовать
S := RichEdit1.Lines[RichEdit1.Lines.Count-1];
S := S + "Some text";
RichEdit1.Lines[RichEdit1.Lines.Count-1] := S;

тогда, по крайне мере, только у последней строки собьется формат



Страницы: 1 вся ветка

Текущий архив: 2006.11.05;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.056 c
2-1161360297
masaka
2006-10-20 20:04
2006.11.05
вопрос про сокеты (ламерский)


2-1161067677
morda
2006-10-17 10:47
2006.11.05
MySQL


2-1161103968
17.10.2006
2006-10-17 20:52
2006.11.05
ProgressBar


2-1161260781
vitaly27
2006-10-19 16:26
2006.11.05
Помогите пожалста больше немогу


2-1161504337
m-kirill-2003
2006-10-22 12:05
2006.11.05
Вопросик по кнопкам