Главная страница
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.054 c
2-1161313717
КлЯкСа
2006-10-20 07:08
2006.11.05
Как активизировать всплывающие подсказки при написании кода?


15-1161139835
Slider007
2006-10-18 06:50
2006.11.05
С днем рождения ! 18 октября


15-1161023303
Евгений Р.
2006-10-16 22:28
2006.11.05
Delphi 5


11-1137747496
-=Mike=-
2006-01-20 11:58
2006.11.05
Вопрос по ListView


2-1161350547
Dib@zol
2006-10-20 17:22
2006.11.05
Ворох вопросов по API