Текущий архив: 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.47 MB
Время: 0.042 c